msc*_*msc 1 c arrays null-terminated
灵感来自这个问题.
码:
#include <stdio.h>
int main()
{
char arr[] = "Hello";
char *ptr = arr + 5;
printf("%s\n",ptr);
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我访问了以null结尾的字符.
那么,在文字字符串中访问空终止字符时实际发生了什么?它是未定义的行为吗?
基本上,你传递一个空字符串作为参数,所以它应该被视为这样.
对于%s转换说明符,与printf()family
[...]数组中的字符被写入(但不包括)终止空字符.[...]
在你的情况下,null终止符恰好出现在数组的第一个元素中,就是这样.
只是为了澄清,访问空终止符是可以的,访问NULL指针不正常,它们都是不同的东西!