可能我只是用于谷歌搜索,但我一直认为char数组只能通过文字初始化(char x[]="asdf";)终止null,当我看到情况似乎并非如此时有点惊讶.
int main()
{
char x[2];
printf("%d", x[2]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:0
声明为size = 2*char的数组不应该实际获得2个字符的大小吗?或者我在这里做错了什么?我的意思是将char数组用作简单的char数组而不是字符串是不常见的,或者是这样吗?
char i;
for(i=0;i<16;i++)
printf("%c","asdf"[i]);
i=1;
if("123"[i]==1)
i=1;
if("456"[4]==1)
i=1;
if("789"[1]==1)
i=1;
Run Code Online (Sandbox Code Playgroud)
输出是:
asdf 123 456
Run Code Online (Sandbox Code Playgroud)
看似大多数'字符串'在内存中直接相继.我不认为这是随机的,或者是它?而且,当我在char-access-expression中使用int变量而不是i时程序失败,而char-access-expression不是第一个(这里是asdf [i]).例如if("123"[j] == 1)
有人可以向我解释一下吗?