1.字符数组的两种常见形式char arr[ ] { a ,b ,‘c’,‘d’ };//字符数组1char arr2[ ] “abcd”;//字符数组2arr大括号初始化里面只有4个字符 ‘a’ ‘b’ ‘c’ ‘d’数组大小 sizeof(arr)4 不会自动补 \0 字符串结束标志。内存 arr[0] 97arr[1]98arr[2]99arr[3]100 只有4个元素。arr2双引号字符串初始化C语言规定用双引号写字符串常量末尾自动追加 \0 ASCII值为0。实际存放内容 ‘a’,‘b’,‘c’,‘d’,‘\0’ sizeof(arr2)5 对应监视窗口里类型是 char[5] arr2[4]0 就是 \0 。图片1.2从图一和图二可知两种表达方式底层存储有区别图二多了‘\0’图片3还有通过我上一篇文章说过的方法用sizeof可以计算出数组里分别有4和5个数据2、两种写法的本质写法1 {‘a’,‘b’,‘c’,‘d’} 是普通字符列表初始化大括号逐个列出字符写几个元素数组长度就是几它只是单纯的字符数组不是C语言字符串如果把 arr 传给 printf(“%s”,arr) 打印字符串程序会乱码因为没有 \0 printf不知道什么时候停止会向后读取内存。写法2 “abcd” 是字符串常量双引号是字符串简写方式编译器默认在最后加上结束符 \0 arr2 才是标准C语言字符串 printf(“%s”,arr2) 可以正常输出abcd。因为%s是打印字符串的原理就是遇到\0就停止。图片4例子如下3.简单总结{ } 手动写字符编译器不会自动补 \0 数组长度等于你写的字符个数“” 字符串形式编译器末尾自动加上 \0 数组长度 字符数1。日常想存字符串优先用 “” 只有单纯存放字符不用printf输出的时候才用 {} 。ok,这篇文章就到此结束要是对你有帮助可以点赞加收藏有任何问题在评论区提出。