在字符数组中,以字符串形式存入,机器会自动加上'\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

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信