我有两个代码:
正常:
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 中的所有元素都指向正常声明的同一位置,而在动态声明中创建了多个对象?
为什么是这样?