-2
Cで束縛変数を作成しようとしています。 したがって、forループを3回実行して3つの構造変数を作成するとします。 私の質問は、同じメモリロケーションを参照する変数を作成するのはなぜですか。 コード:ループ内でループ内の構造体変数を作成する
struct arrIndexStruct {
int *arr;
int index;
};
int main() {
int i;
for (i=0; i<3; i++) {
struct arrIndexStruct arrayIndexStruct;
arrayIndexStruct.arr = someArray;
arrayIndexStruct.index = i;
printf("%p\n",(void *)&arrayIndexStruct);
}
}
私が手出力は次のようになります。
0x7ffeed84f690
0x7ffeed84f690
0x7ffeed84f690
私は
struct arrIndexStruct arrayIndexStruct1;
struct arrIndexStruct arrayIndexStruct2;
printf("%p\n",(void *)&arrayIndexStruct1);
printf("%p\n",(void *)&arrayIndexStruct2);
をすれば、私は違いは何ですか
0x7ffc484e64d0
0x7ffc484e64e0
を得るでしょう、一方で2つの行動の間にループのローカルスコープはありますか? ありがとう!
これらのスコープよりも長生きする必要はないからです。自動変数が何であるか知っていますか?そうでない場合は、検索してください。 – Olaf