在字符数组中,以字符串形式存入,机器会自动加上'\0;
在字符数组中,以字符形式存入,机器不会自动加上'\0'
在字符串中,效果一样
在C语言中:const char * 代表着字符串
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
//以字符串形式存入,机器会自动加上'\0'
char buf1[] = {"hello"};
//以字符形式存入,机器不会自动加上'\0'
char buf2[] = {'h','e','l','l','o'};
//由于数组元素小于定义的空间,所以后面自动补上 '\0'
char buf3[10] = {'h','e','l','l','o'};
//为了验证这里写成了 const char [],常规写法不建议
const char buf4[] = "hello";
//改成const char *会发生段错误,不允许这样写,类型不匹配
const char buf5[] = {'h','e','l','l','o'};
printf("buf1:%ld\n",strlen(buf1));
printf("buf1:%ld\n",sizeof(buf1));
//因为strlen没找到'\0',就会一直找下去,直到找到'\0'为止,属于非法访问内存
printf("buf2:%ld\n",strlen(buf2));
printf("buf2:%ld\n",sizeof(buf2));
printf("buf3:%ld\n",strlen(buf3));
printf("buf3:%ld\n",sizeof(buf3));
printf("buf4:%ld\n",strlen(buf4));
printf("buf4:%ld\n",sizeof(buf4));
printf("buf5:%ld\n",strlen(buf5));
printf("buf5:%ld\n",sizeof(buf5));
return 0;
}
buf1:5
buf1:6
buf2:15
buf2:5
buf3:5
buf3:10
buf4:5
buf4:6
buf5:10
buf5:5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)