表面上看,都是三个字符,但是a2有一个隐藏的结束符还多占用以恶空间,因此a2的大,该字符是结束符'\0'
在c语言中其实并没有字符串这个数据类型,本质上是使用字符数组来表示字符串的,并且在编译的时候会在末尾增加一个结束字符\0
,所以会大一点。
可以运行下面的示例试一下
#include <stdio.h>
#include <string.h>
int main(void)
{
/*字符数组赋初值*/
char cArr[] = {'p','r','o'};
/*字符串赋初值*/
char sArr[] = "pro";
/*用sizeof()求长度*/
printf("cArr的长度=%d\n", sizeof(cArr));
printf("sArr的长度=%d\n", sizeof(sArr));
return 0;
}