#include<stdio.h>
#include<stdlib.h>
struct keyVal
{
int key;
int val;
};
int main()
{
struct keyVal *arr[5];
int i;
for(i=0;i<5;i++)
printf("\n : %p %p ",&arr[i][0].val,&arr[i]);
printf("\n\n");
printf("\n : %d %d ",arr[0][0].val,arr[0]->val);
printf("\n\n");
for(i=0;i<5;i++)
printf("\n : %d %d ",arr[i][0].val,arr[i]->val);
printf("\n\n");
return 0;
}
まず、for(; ;);
はarr[i][0] == arr[i]
i = 0,1,2,3,4
を意味し、arr[0][0]
からarr[4][0]
とarr[0]
にarr[4]
に同じ%p %p
を生成します。Cプログラムでセグメント分割エラーが発生するのはなぜですか?
第2のfor(; ;);
は、arr[i][0].key
(arr[i]->key
)の値(ガーベッジ値)を出力する必要があります。
我々は実行してキーにアクセスすることができます。
arr[i][0].key
OR i = 0,1,2,3,4
arr[i]->key
を。
コンパイラの警告は何ですか? –
'arr'は初期化されていないので、コード全体は[UB](https://en.wikipedia.org/wiki/Undefined_behavior)です。 – LPs
少し質問を再フォーマットできますか?提示されているように、コードは非常に不明です。 – kfb