我想知道计算机是怎么用sizeof计算字符数组的长度的。
字符数组的结尾是 \0 如果初始化的字符串小于数组的长度则后面全是 \0
那么定义一个字符数组 char a[]="12345"的长度为6;char a[10]="12345的长度为10;我觉得在计算长度的时候遇到\0就该结束了,那为什么不是2个的长度都为6呢?所以我想知道计算机是怎么用sizeof计算字符数组的长度的。
我想知道的是计算机内部它怎么来获得长度,我定义了a[10];它是怎么知道就是10的;
计算机内部在 栈区里面会分配10个字节的内存存储字符,在静态区 会分配4个字节来存放a的首地址, 计算机在栈区读取字符的时候 遇到\0就知道结束了。那么我定义字符数组只有5个字符,而sizeof是怎么计算出他的长度为10的???
sizeof是在编译阶段就计算好数据的大小的。编译器看见了a[10],当然知道他的长度是10啊。当[]中没有指明大小,那看到"12345"也就知道了长度是6了。