c语言定义数组时可以不写下标也不初始化赋值么?(如:int a[];)

c语言定义数组时可以不写下标也不初始化赋值么?(如:int a[];)

这样写数组元素的大小系统会根据随后的赋值自动识别么?

不可以。

但作为一个函数参数时,则可以:
void foo(int bar[])
{}

此时的bar,编译器并不会把它当成数组,而会把它当成指针。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-15
不行!用C#用多了吧?
能做到不声明长度的数组都是一些有运行时环境的语言。里面的数组在C层面上是一个对象,其自身不仅保存数据,还保存了自己的长度。
所以C是不能不给下标来初始化数组的。本回答被网友采纳
第2个回答  2013-02-14
C语言定义数组时必须有数组类型,名以及数组的容量。 可以不赋初值,系统默认为0。
第3个回答  2013-02-14
不能这样定义,你后面那个问题也就没有意义了
第4个回答  2013-02-15
还是直接把数组长度写上去吧,如果不确定长度就尽量写得长一点

C语言在main函数外定义数组么?不也是初始化么
在main外,定义数组时(定义任何变量都是),可以初始化赋值!!但不可以有单独的赋值操作语句。如:int i=0;int main(){ ...} 这是可以的!但 int i;i=0; \/\/这样就是非法的!!int main(){ ..}

数组在声明的时候可不可以不说明大小,如int a[ ] ;
可以的,但必需与初始化配合,如:int a[] = {1,2,4,6,7,9.10};

C语言定义一维数组时数组的下标可以省略吧
定义数组形式如下:1.int a[5];如果为全局变量,默认为0,否则值随机。2.int a[5] = {1,2,3,4,5};定义长度与元素值。如果定义的值的数量少于5个,未定义的值初始化为0;如果多于5个,报错。3.int a[] = {1,2,3};定义数组的值,长度为空,表示自动分配一个长度为后面元素个数的数组...

在C语言编程中,定义一个数组时要不要初始化?
不是不能初始化,是初始化的不对。另外,数组最好用memset初始化。(1)在定义数组时对数组元素赋以初值。如:static int a[10]={0,1,2,3,4,5,6,7,8,9};经过上面的定义和初始化后,a[0]=0,a[1]=1,… ,a[9]=9。(2)初始化时可以只对一部分元素赋初值。例如:...

C语言里为什么不能用赋值语句对字符数组进行整体赋值
首先C语言里面的数组,一旦定义好了,是无法改变类型和长度的,也不是指针,不能改变指向的内容,所以如下这种写法 int a[10], b[10];a = b;是无法编译的。在其他语言里,比如java,c#,javascript,python等等等等,数组都是作为对象来使用的 可以写a=b,那么a原来表示的数组就被抛弃了,a和b...

c语言中,若在函数内部定义变量时没有给变量赋予初值,如int a;,则a的...
局部变量未初始化就是一个随机值,如果声明的int为全局变量会默认初始化为0

c语言中定义一维数组,能全部省略吗? int a[10]={};可以吗?
不可以噢

c语言中什么时候可以这样定义数组"int a[]"
定义数组,并通过初始化方式来填写数组内容 int a[]={1,2,3,4,5} ;这与int a[5]={1,2,3,4,5} ; 是一样的,[]中不写数字,表示数组空间大小由实际数组元素数据个数来决定。这样定义的数组,一般表示一个常量数组。当然,因为没有加const,也可以修改数组元素内容,如:a[0]=6 ;自...

C语言里的静态数组初始化问题
int a[10];这里定义了,但是没初始化,这没有任何问题,以后你可以自己往里面赋值,比如 a[1] = 8;a[5] = 3;或者 for(int i = 0; i < 10; i++)a[i] = i;等等 对于动态数组,不能被初始化,因为动态数组在定义时只是个指针,比如 int *a;这里变量a只是个指向int类型的指针,而...

C里,为什么数组不能先定义再赋值?
而 这个时候系统还没有给变量分配内存,即这时候整形变量a是不存在的。不能用 一个不存在的数来定义数组的长度。第二:你这个题是用整数10来定义数组长度的,而不是用变量所以是成立的。第三:这道题的问题出在于你所写的数组名和变量名是一样的。这种定义方式貌 似不对 ...

相似回答