\和0字符是否存储在字符串末尾的相同位置或不同位置?
main()
{
char x[]="Hello\0";
char y[]="Hello12";
char z[]="Hello\012";
char w[]="Hello1234";
printf("%d %d %d %d", sizeof(x), sizeof(y), sizeof(z), sizeof(w));
}
Run Code Online (Sandbox Code Playgroud)
输出:
7 8 7 10
Run Code Online (Sandbox Code Playgroud)
请解释代码的输出.
\0在C字符串中是单个字符,ASCII值0.所有C字符串文字也包含一个隐式终止\0字符,无论字符串中包含哪些内容(甚至是另一个\0).
\012 是八进制字符ASCII 10(换行)
所以:
char x[]="Hello\0"; // 5 letters + your \0 + implicit \0 == 7
char y[]="Hello12"; // 7 letters + implicit \0 == 8
char z[]="Hello\012"; // 5 letters + \012 + implicit \0 == 7
char w[]="Hello1234"; // 9 chars + implicit \0 == 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |