【发布时间】:2020-04-05 01:32:29
【问题描述】:
考虑以下示例,
#include <stdio.h>
int main()
{
char charArr[3] = "c++";
char *pointer = charArr;
pointer+=3;
*pointer = 'q';
pointer+=1;
*pointer = 'd';
printf("%s", charArr);
return 0;
}
我希望我会得到, c++qd 但我得到了 c++r
q 的值增加 1 并变为 'r',我尝试了其他增量,它反映了 ASCII。
【问题讨论】:
-
你正在做的是 undefined,因为你超出了数组的范围......
-
你也没有为空终止符留下空间。
-
一旦你点击了未定义的行为,程序的结果就毫无意义了。
-
@Mirror 这很不显而易见。一旦您使用any C++ 功能,您的代码就会变成C++,并且不能再编译为C。一旦您的代码是C++anyway,您不妨利用并不要坚持使用 C 的东西。C 和 C++ 不是同一种语言的变体;它们是非常不同的语言,您需要决定使用哪一种。
-
所以不要用 C++ 语言标签来标记你的问题...