#include <stdio.h>
#include <stdlib.h>
int main( void ) {
char *ptr1 = "Hello World\n";
char *ptr2;
ptr2 = ptr1 + 6;
ptr2 = "Test!\n";
printf("%s",ptr2);
printf("%s",ptr1);
return EXIT_SUCCESS;
}
输出:
Test!
Hello World
为什么我没有得到
Hello Test!
?我以为id会覆盖
World
中的ptr1
部分。 最佳答案
当你给指针赋值时,比如ptr1
或ptr2
你不是在改变储存在那里的东西的价值,你只是在改变它们指向的东西。
当你说:
ptr2 = ptr1 + 6;
您正在使
ptr2
指向ptr1
字符串的第6个元素然后你说:ptr2 = "Test!\n";
这意味着
ptr2
现在指向内存中其他位置的一个新的、不同的字符串,该字符串包含"Test!\n"
所以你有这个:ptr -------> "Hello World\n"
ptr2 -------> "Test\n"
现在,当你打印它们时,你会得到:
Test!
Hello World