C语言字符数组不赋初值是默认为'\0'还是随机值

如题所述

第1个回答  2022-11-16

普通数组没有赋初值,默认的数组元素值是随机数,不是0。

如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。

例子:

 #includeint main(void)
{

int m = 0;

static int n;

 int a = 5, b = 6, c = 7, d = 8;

int k = ((m = a>b) && (n = c>d))

printf("k = %d, m = %d, n = %d\n", k, m, n);

return 0;

 }

输出结果为:k = 0, m = 0, n = 0;

当变量用static修饰,但是没有赋初始值的时候,编译器会自动给它赋值为0.但是如果不用static 只是 int n;这样定义的话,这个值就是未知的,因为编译器会给这个变量分配一块4字节的地址空间,这个地址里面的值就是n的值。

扩展资料

1、数组中的每个元素都有一个序号,这个序号从0开始,而不是从熟悉的1开始,使用数组元素时,指明下标即可。

2、数组下标必须是整数,取值范围为 0 ≥ index > length。

相似回答