1

以下のプログラムは動作します:

int main()
{
    char *g[10];
    char a[10] = "test";
    g[0] = &a[0];
    printf("string = %s\n",g[0]);
    exit(0);
}

出力: テスト

しかし、これは機能しません:

int main()
{
    char t[] = "test";
    struct abc
    {
        char *a[255];
    }*p;
    p->a[0] = &t[0];
    printf("value = %s\n", p->a[0]);
    exit(0);
}

出力: セグメンテーション違反

誰かがコードの 2 番目の部分で何が問題なのかを教えてもらえますか? ここに間違って投稿した場合は申し訳ありません。

4

1 に答える 1

3

2 番目のコードでは、ポインタpを初期化せずに使用しています。これにより、未定義の動作が発生します。
これを試して

struct abc q;
p = &q;
p->a[0] = t;
printf("value = %s\n", p->a[0]);
于 2013-11-14T15:57:28.713 に答える