ポインタの配列がI として動作するかどうかをテストするコードを少し書いた。次に、私はこの有線の結果を得ました - 3番目のポインタの割り当ての後、ポインタの配列はすべて最後の文字列を指しています。誰でも何が起こったのか説明できますか?ありがとうございました。混乱した結果: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
文字列をヌル終了することを確認してください。 –
U-la-la。私は一度に1つ(!)のものを試してみることをお勧めします。それがうまくいくと、次に難しい例に移ります。私はこのコードを見てめまいになり、誰かがあなたのためにそれを訂正すれば、あなたはまだ理解するのが難しいかもしれません....ステップバイステップ。 – AudioDroid
また、あなたのメインリターンintを作る –