关于数组中的\0(反斜杠零)问题
发布网友
发布时间:2022-05-21 12:38
我来回答
共3个回答
热心网友
时间:2023-10-25 00:04
char *p = "abcd"; //这后面就自动加'\0';
char p[] = "abcd"; //这后面自动加'\0'
char p[4] = "abcd"; //这个就有问题了,因为其实你只能在p中放三个字符。这个'\0'是要你自己加上去的
热心网友
时间:2023-10-25 00:05
是否赋值为0这要由编译器决定,
不过现在的编译器基本都做到这点了.
但好的风格是这样:
int a[5]={0};
这样a的5个元素初始化都为0,
但如果你不想要5个元素都为0那就要人为写了.
int a[5]={1,0,3,0,4};
另外字符型数组变量系统最后为自动加上\0
热心网友
时间:2023-10-25 00:05
LS有误。
1.无论如何,初始化不是赋值。
2.字符型数组变量不会自动初始化。""之间的字符串(字符串字面量)这种表示方法末尾即隐含了一个字符串结束符'\0'。
对于数组而言,无论元素类型如何,如果显式初始化,而且初始化的元素个数小于定义的数组长度时,编译器自动把剩余空间初始化为零。因此int a[5]={0};这类写法相当于全部初始化为零。
对于全局或静态变量,如果不显式初始化,所有空间都会被隐式初始化为零。
除此之外的局部自动变量,如果不显式初始化,所占空间为随机值。
====
[原创回答团]
参考资料:原创