私は2つのコードを持っています:
通常:
int* p[5];
for (int i=0;i<5;i++){
int s = rand()%25;
p[i]=&s;
}
動的:
int* p[5];
for (int i=0;i<5;i++){
int* s = new int;
*s = rand()%25; //Edit: typo, I didn't want to make a random pointer
p[i]=s;
}
ここで、配列pをp[i]
最初に出力し、次に次のように出力*p[i]
すると、次のようになります。
static dynamic
0x22ff04 7 0x22ff30 7
0x22ff04 7 0x22ff24 14
0x22ff04 7 0x22ffa6 2
0x22ff04 7 0x22ff89 8
0x22ff04 7 0x22ff13 21
では、動的宣言では複数のオブジェクトが作成されているのに、なぜpのすべての要素が通常の宣言で同じ場所を指しているのでしょうか。
どうしてこれなの?