【发布时间】:2021-12-29 01:49:00
【问题描述】:
我在下面创建了两个数组'TEST'和'arr',都包含字符“ABCDE”。
#include <stdio.h>
#define TEST "ABCDE"
int main()
{
char arr[5];
int i;
for(i=0;i<5;i++)
{
arr[i] = i + 65;
}
printf("%s\n",arr);
printf("%zd %zd",sizeof arr,sizeof TEST);
return 0;
}
输出是
ABCDE
5 6
鉴于这两个数组都带有 5 个字符,为什么它们的大小不同? (我知道每个字符串的末尾都有一个空字符。)
【问题讨论】:
-
"知道每个字符串的末尾都有一个空字符。":我不确定您认为空字符在
arr中的位置。你能解释一下你认为两个sizeof表达式应该有相同结果的原因吗? -
我认为'arr'的大小应该是6,但是'arr'似乎没有地方存储空字符?
-
如果你告诉编译器
arr有五个槽,那就是它。如果您随后在所有五个狭缝中放置非零字符,则您不能将数组用作字符串。这对编译器来说不是问题。数组不一定可以用作字符串。
标签: arrays c character null-character