我写了一小段代码来测试指针数组是否工作正如我想要的 。然后我得到了这个有线结果 - 在第三个指针分配后,指针数组都指向最后一个字符串。任何人都可以解释发生的事谢谢。困惑的结果:在C的指针阵列
#include <string.h>
#include <stdio.h>
main() {
char *pstr[10];
char p[10];
char *s1 = "morning";
char s2[10] = {'h','e','l','l','o'};
char s3[10] = {'g','o','o','d'};
int i = 0;
strcpy(p, s1);
pstr[0] = p;
printf("%s\n", pstr[0]);
strcpy(p, s2);
pstr[1] = p;
printf("%s\n", pstr[1]);
strcpy(p, s3);
pstr[2] = p;
printf("%s\n", pstr[2]);
for (i = 0; i < 3; i++)
printf("%s\n", pstr[i]);
}
从程序的输出是:
morning
hello
good
good
good
good
请确保您的字符串为null。 –
U-la-la。我建议你一次尝试一个(!)。当这个工作时,你会转向下一个更困难的例子。我很头晕地看着这段代码,如果有人为你纠正它,你可能仍然很难理解....一步一步。 – AudioDroid
也让你的主要回报int –