关于数组中的\0(反斜杠零)问题

各位大虾麻烦帮小弟一个忙,我是个菜鸟想问问:数组中的\0是计算机自动赋给的么?什么时候需要认为加入/0???什么时候不需要人为加入/0???
谢谢各位!
最新回答
快乐

2024-12-02 17:26:01

char *p = "abcd"; //这后面就自动加'\0';
char p[] = "abcd"; //这后面自动加'\0'
char p[4] = "abcd"; //这个就有问题了,因为其实你只能在p中放三个字符。这个'\0'是要你自己加上去的
雪紫∮冰雨

2024-12-02 13:21:15

是否赋值为0这要由编译器决定,
不过现在的编译器基本都做到这点了.
但好的风格是这样:
int a[5]={0};
这样a的5个元素初始化都为0,
但如果你不想要5个元素都为0那就要人为写了.
int a[5]={1,0,3,0,4};
另外字符型数组变量系统最后为自动加上\0
脸红妹妹

2024-12-02 05:02:17

LS有误。
1.无论如何,初始化不是赋值。
2.字符型数组变量不会自动初始化。""之间的字符串(字符串字面量)这种表示方法末尾即隐含了一个字符串结束符'\0'。
对于数组而言,无论元素类型如何,如果显式初始化,而且初始化的元素个数小于定义的数组长度时,编译器自动把剩余空间初始化为零。因此int a[5]={0};这类写法相当于全部初始化为零。
对于全局或静态变量,如果不显式初始化,所有空间都会被隐式初始化为零。
除此之外的局部自动变量,如果不显式初始化,所占空间为随机值。
====
[原创回答团]