黑马程序员技术交流社区
标题:
为什么我这么定义数组会出错,基础视频里边没听懂
[打印本页]
作者:
邱蚓
时间:
2014-6-18 23:11
标题:
为什么我这么定义数组会出错,基础视频里边没听懂
#include<stdio.h>
int main()
{
int a=5;
int b[a];
}
作者:
傘が咲く
时间:
2014-6-19 08:12
数组元素个数 不允许 是变量。
作者:
haohaoxuexi
时间:
2014-6-19 08:22
数组元素个数不能是变量,第一次见这么写的
作者:
liulinjie
时间:
2014-6-19 09:48
快速入门那套视频里讲的是不允许这样定义, 但是零基础那套视频里讲的是可以这么定义的. 可能零基础那套视频比较新, 在Xcode中实验一下, 是允许这么定义的.
二者使用上的区别是,
使用常量或者常量表达式(包括宏定义)指定元素个数时, 在定义数组的同时可以对数组进行初始化.
使用变量或变量表达式指定元素个数的数组, 不可以在定义的同时进行初始化, 必须定义后再赋值.
比如,
// 使用常量或常量表达式, 可以在定义同时初始化
int a[3*3] = {1}; // 初始化后, 未被赋值的元素默认赋值为0
// 使用宏定义, 可以定义同时初始化
#define N 5
int a[N] = {1, 2, 3, 4, 5};
// 使用变量或变量表达式指定元素个数时, 不可以在定义时初始化数组
int n = 5;
// int a[n] = {1, 2, 3, 4, 5}; 错误!
// 但是可以先定义数组, 再对数组元素进行赋值
int a[n]; // 可以这样定义
a[0] = 1; a[1] = 2; // 可以赋值. 注意: 未被赋值的元素是任意值 (不一定是0)
作者:
zys456465111
时间:
2014-6-19 11:30
使用不定长数组的特性是C99中新增的,如果你在用VC++6.0编译的话那么肯定会报错。
不定长数组定义要求:如果使用变量作为定义数组的大小值,那么不可以在定义的同时进行初始化。
如
int a = 2;
// int b[a] = {1,2};//这句是错误的
//-----这样是正确的
int b[a];
b[0] = 1;
b[1] = 2;
作者:
chain
时间:
2014-6-19 17:31
把前面改成 const int a =5 ,后面就可以了
作者:
刘元明
时间:
2014-6-19 17:34
数组元素个数不能是变量
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2