为什么字符数组需要以'\0'结束,而数值数组就不需要呢
发布网友
发布时间:2022-06-26 11:43
我来回答
共4个回答
热心网友
时间:2024-12-03 03:23
a[]={'a,''b','c'} 其实等于a[]={'a,''b','c','\0'};
你要是用sizeof(a)看的话其大小是等于4
由于很多字符串处理函数和宏,如strcpy,memcpy之类的都是以字符串的结束符作为函数完成的终点,所以字符串数组都要以结束符结束。
其实数值数组也是一样的,要是没有结束符也会越界,只是数值数值一般不会被用在strcpy之类函数中。
热心网友
时间:2024-12-03 03:24
a[]={'a,''b','c'} 这是字符数组 没有什么'\0',只有字符串的话 系统给它分配内存的时候会加一个结束符'\0'
像这个 char a[]={"abc"} 那才有'\0'
字符是单引号 字符串是双引号
热心网友
时间:2024-12-03 03:24
LZ可以这样思考:为什么字符串要有终结符? 就会很好理解。
只有字符串才会默认的在后面加上\0,即使是字符数组也是在赋值的时候\0从字符串里面拷贝过去的例如:
char s[] = "adfas";s是有\0的。。因为在"adfas"的后面有一个\0
a[]={'a,''b','c'} 是没有\0的!
热心网友
时间:2024-12-03 03:25
没有'\0'
字符串数组后面由一个'\0',因为字符串本身由一个'\0',把它付给数组时必须把null付给数组
而字符数组是单个字符赋值,没人付给数组null
个人建议在学数组时,要结合着指针学,毕竟指针才是王道