#include <iostream>
#include <stdio.h>
main()
{
//1:int *q;
int *p;
cout<<"*p="<<*p<<"/n";
cout<<"p="<<p<<"/n";
int a=5;
cout<<"a="<<a<<"/n";
cout<<"&a="<<&a<<"/n";
p=&a;
cout<<"*p="<<*p<<"/n";
cout<<"p="<<p<<"/n";
//2:
int *q;
*q=a;
cout<<"*q="<<*q<<"/n";
cout<<"q="<<q<<"/n";
*p=6;
//print p
cout<<"*p="<<*p<<"/n";
cout<<"p="<<p<<"/n";
//print a
cout<<"a="<<a<<"/n";
cout<<"&a="<<&a<<"/n";
//print q
cout<<"*q="<<*q<<"/n";
cout<<"q="<<q<<"/n";
}
//输出正常:
*p=37879744
p=0x241ffa0
a=5
&a=0x241ff58
*p=5
p=0x241ff58
*q=5
q=0x10000
*p=6
p=0x241ff58
a=6
&a=0x241ff58
*q=5
q=0x10000
请按任意键继续. . .
1问:这里,可以看到:指针p指向的初始空间是0x241ffa0;而指针q指向的初始空间是q=0x10000;显然,指针p和q一个指向在栈,一个指向堆;我想问问,这是为什么?
2问:如果,将指针q的定义语句放到最上方1的位置,则编译有错,是为什么?