小编use*_*846的帖子

是否所有char数组都自动以null结尾?

可能我只是用于谷歌搜索,但我一直认为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数组而不是字符串是不常见的,或者是这样吗?

c arrays string null-terminated

9
推荐指数
2
解决办法
2万
查看次数

从未在变量中声明的"字符串"访问字符(C)

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)

有人可以向我解释一下吗?

c memory arrays string char

1
推荐指数
1
解决办法
92
查看次数

标签 统计

arrays ×2

c ×2

string ×2

char ×1

memory ×1

null-terminated ×1