當編譯這個程序時,我收到了一個我從未想到的輸出。當我回顧這個節目時,我預計指針的結果仍然是「你好,世界!」因爲據我所知指針從未受pointer2的影響。然而,我的輸出顯示,當指針被打印時,它包含指針2的字符串「y you guys!」。這是怎麼回事?謝謝!!指針程序混亂(c編程)
#include <stdio.h>
#include <string.h>
int main() {
char str_a[20];
char *pointer;
char *pointer2;
strcpy(str_a, "Hello, world!\n");
pointer = str_a;
printf(pointer);
pointer2 = pointer + 2;
printf(pointer2);
strcpy(pointer2, "y you guys!\n");
printf(pointer);
}
輸出
Hello, world!
llo, world!
Hey you guys!
指針指向內存地址。也就是說,'pointer'指向'str_a'的基地址,pointer2指向'str_a'的基地址之前2個字節。所以,每次訪問任何指針時都會影響'str_a'數據。 – pah