什么是指针:
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。通过指针我们可以直接对内存进行操作。
什么是地址:
比如你要给你朋友寄快递,在寄东西的时候是不是要填写地址,通过地址你的东西才能送到朋友手里。同理,比如你定义一个变量为i。
而这个变量i是存在计算机内存中的,也就是i在这个内存中的编号,即地址。
举例:
#include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a ; //定义了一个整型变量 a int *p ; //定义了一个整型指针p, *代表变量P是一个指针 p=&a; //将变量a的地址取出 在赋给变量P 这样P保存的内存地址就是a的地址 &符号是取地址符 cout << "变量a地址:"<< &a << endl; cout << "指针p地址:" << p << endl; cin.get(); return 0; }
图解:
可以发现指向的地址是一样的
空指针!:
指针是用来保存内存地址的变量,如果我们不初始化,该指针就是一个失控指针,它可以指向内存中的任何地址。所以记得要初始化。
一般定义的时候初始化都是为0。
int *p ; p=0; //为0 /* 下一句的写法就是上一句合并的写法 一般写法上按照下一句写法 */ int *p=0; //初始化为0
用指针来访问存储值:
#include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int love = 520; //定义一个int类型变量love 初始化值为520 int *gril = 0; //定义一个int指针gril 初始化值为 0 gril = &love; //用指针变量gril来保存变量love的地址 cout << "gril值:" << *gril << endl; //输出为520
cin.get(); return 0; }
其中 cout << "gril值:" << *gril << endl;
这里*gril因为保存的是love变量的地址,因此输出520
容易错误的笔记:
对于指针,最容易混淆的概念是:指针内存地址和指针地址值!!!
搞的我脑壳有点晕了 笔记暂时做到这了。。。。。