从开始学习C语言到现在遇到最难的问题始终是指针的问题,所以希望每次都有新的体会,然后再记录下来,能看到自己的成长
最近知道的一个新的体会:指针指向的是一个地址,所以指针所要给的值也是一个地址,
所以有了这样一个值:int a = 0;
int *p =&a;//注意这里给指针的就是一个地址,将a的地址给了指针p,所以指针p就指向了a的地址
自己的盲区:
int *p;
注意在内存中:一个变量就拥有地址,内存中会为变量分配地址
p: 表示的是一个指针变量的名字,从此这个指针的名字就叫做p
&p:表示的是p的地址,也就是指针p所指向的地址
*p: 表示的是指针里面所存放的内容
以下两种表示都是可行的,在vs中编译通过:
//第一种
int a = 0;
int *p = &a;//定义的同时进行初始化
cout << "*p= " << *p<<endl;//表示的是值0
cout << "p" << p<<endl;//表示的是地址p0039FA50
//第二种
int a = 0;
int *p;
p = &a;//先定义然后再进行初始化
cout << "*p= " << *p << endl;//0
cout << "p" << p << endl;//p0020FC20
while (1);
return 0;