c语言数组未初始化
Ⅰ c语言定义一维数组,元素未初始化,那数组元素默认值是什么
首先. 试一下的方法是错误的.
(1)全局变量
未初始化的全局变量是 0
(2)局部变量
<1>Debug版
是填充字符, 比如可能是 0xCDCDCDCD 等
<2>Release版
是乱码, 也就是这个地方原来(在这之前被其他变量使用的时候)遗留下来的数据.
Ⅱ c语言中如果字符串数组没有初始化,那么数组名会指向哪里
char ar[10];这是定义一个拥有10个char类型元素的数组,它被保存在栈中,拥有自己的地址。
没有初始化并不影响什么,只是它的元素没有初始值而已(编译器会给它一个默认值)。
Ⅲ C语言求教,关于指针数组未初始化,代码如图
char * name[3]; //在64位环境下,每个指针的长度为8字节,所以name数组本身占用24个字节
scanf("%s",name+i); //从逻辑上说,这是错误的,name+i是个char**, 但对于%s格式,scanf只会把name+i看做是个char*,所以name这时就是个有效的char[24],这个scanf操作的并不是这个数组内未分配空间的char*野指针,而是一个已分配空间的char[24]。
name+i每次偏移8个字节,所以输入的后一个字符串就是从前一个字符串的第8个位置开始的,也就把前一个字符串的第8个开始的字符覆盖掉了,超过24个的已经越界,但不一定会出问题
Ⅳ c语言数组不初始化
C语言中,如果不对变量作初始化时,全局变量可以自动初始化为0值。
局部变量的话,变量如果不作初始化时,其中的值是不确定的。
Ⅳ c语言数组必须初始化吗
你好,c语言数组不是必须要初始化
Ⅵ c语言,可不可以不初始化数组
如果你把数组定义为全局数据(定义在主函数之外),那么编译器会帮你把数组初始化位0,但是如果不是全局数据,那么数组数组元素的值就是不确定的了。(其实是多少与你用的编译器有关,比如vc6.0会把它初始化位十六进制数cc)
但是如果你这样定义数组
int a[10]={1,2};
那么有些编译器会把后面的项初始化为0,但也不能保证所有的编译器都会这样做,所以不建议这样做,尽量对数组进行初始化。
Ⅶ C语言数组不能初始化
从各个表达式中可以看出:C是不能正确初始化的,C用来初始化三行两列的数组,而不是两行三列的
BD中第一维省略的写法是可以的,B中没有初始化到的全部赋值为0,D中依次行从上到下,列从左到右赋值
Ⅷ c语言数组未初始化问题
puts();函数输出字符时,如果遇到'\0',就终止输出,没有遇到就一直输出字符直到遇到'\0'。
strcat()在拼接字符串后,会自动添加一个'\0'。
所以上面的没有错,下面的错了。
你没有对字符数组赋值,而且程序也不会自动帮你添加‘\0’。所以打印的时候,是整个数组全部打印出来的!至于为何是烫烫烫,与默认的机器码有关。
Ⅸ c语言中数组未初始化时,数组元素是变量还是什么可以将未初始化的数组中元素直接赋值给变量吗,在线等
是未知值,或者都是0,根据编译器不一样而变化吧。可以,但是会带来不可预计的后果。所以慎用
那你为什么不对a先初始化一下,确保全0,防止不可预知问题的发生
Ⅹ C语言中数组在没有初始化的情况下,各元素的值会怎样
没初始化是Null,没任何值!
而且要看你是什么数组,长度也没定义的话肯定是空的!长度定义的就有你定义的那么多个Null!