C 访问以空结尾的字符
受此启发 代码:C 访问以空结尾的字符,c,arrays,null-terminated,C,Arrays,Null Terminated,受此启发 代码: #include <stdio.h> int main() { char arr[] = "Hello"; char *ptr = arr + 5; printf("%s\n",ptr); } #包括 int main() { char arr[]=“你好”; char*ptr=arr+5; printf(“%s\n”,ptr); } 在上面的代码中,我访问了以null结尾的字符 那么,当访问文本字符串中以null结尾的字符时,实际会发生什么
#include <stdio.h>
int main()
{
char arr[] = "Hello";
char *ptr = arr + 5;
printf("%s\n",ptr);
}
#包括
int main()
{
char arr[]=“你好”;
char*ptr=arr+5;
printf(“%s\n”,ptr);
}
在上面的代码中,我访问了以null结尾的字符
那么,当访问文本字符串中以null结尾的字符时,实际会发生什么?这是未定义的行为吗?本质上,您传递的是一个空字符串作为参数,因此应将其视为空字符串 对于
%s
转换说明符,使用printf()
系列
数组中的[…]个字符是
写入(但不包括)终止空字符。[…]
在您的例子中,空终止符恰好出现在数组的第一个元素上,就是这样
只是为了澄清一下,访问空终止符是可以的,访问
null
指针是不可以的,它们都是不同的事情 本质上,您传递的是一个空字符串作为参数,因此应将其视为空字符串
对于%s
转换说明符,使用printf()
系列
数组中的[…]个字符是
写入(但不包括)终止空字符。[…]
在您的例子中,空终止符恰好出现在数组的第一个元素上,就是这样
只是为了澄清一下,访问空终止符是可以的,访问
null
指针是不可以的,它们都是不同的事情 没什么特别的。指向空字符的指针由期望字符串的函数解释为零长度字符串 没什么特别的。指向空字符的指针由期望字符串的函数解释为零长度字符串 您基本上仍在访问以null结尾的字符串。它只有零个字符长,即它不包含任何要打印的内容 您的代码基本上与
printf("");
比较这个问题,不是重复的,而是类似的问题:
您基本上仍在访问以null结尾的字符串。
它只有零个字符长,即它不包含任何要打印的内容 您的代码基本上与
printf("");
比较这个问题,不是重复的,而是类似的问题:
你说的“访问”是指阅读?为什么空字符与字符串中的任何其他字符有任何不同?如果你试图写,超出了字符串的界限,那么效果是未定义的。“访问”是指阅读?为什么空字符与字符串中的任何其他字符有任何不同?如果您试图写入,但超出了字符串的边界,则效果未定义。