在内存中字符串结尾都有0吗

来源:百度知道 编辑:UC知道 时间:2024/07/03 04:22:32
TCHAR ch[4]=_T("hel");这是编译器是不是也会自动在字符数组的结尾加0啊

没法说这个事情 ,有2种情况.

例如 在 C 语言中 根本没有字符串 对象
所以 字符串 实际是个 字符数组
char c[]=“‘a’,‘b’,‘c’,‘\0’”;
在末尾加个 \0
如果你 没有 加上 这个"\0"
那么当你使用指针 访问 c[]的时候 他会从 &C 这个地址开始 一直 遇到 \0 结束, 如果 内存中就是没有 \0 那么就出错了.
所以,字符串 可以这样

char *c="abcd";

把 "abcd"的地址给C ,但是 这个"abcd"地址的末尾会自动添加一个\0 不需要人工干预.

总结如下: 一个字符串 必须要一个 \0 结尾
不然就会 越界.
如果 是字符数组 那么 就必须在 最后一个元素 赋值为 "\0" 而不是" 0"
如果是 字符串 对象 赋值给 字符指针
"abcd" 可以省略 \0 那是因为 C 语言会自动处理 这个地址.末尾加上 \0

TCHAR ch[4]=_T("hel");这是编译器是不是也会自动在字符数组的结尾加0啊

答:ch[]是数组 编译器 不可能擅自改动你的赋值的