C++指针笔记

什么是指针:

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。通过指针我们可以直接对内存进行操作。

什么是地址:

比如你要给你朋友寄快递,在寄东西的时候是不是要填写地址,通过地址你的东西才能送到朋友手里。同理,比如你定义一个变量为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

容易错误的笔记:

对于指针,最容易混淆的概念是:指针内存地址和指针地址值!!!

搞的我脑壳有点晕了 笔记暂时做到这了。。。。。

原文地址:https://www.cnblogs.com/hkleak/p/5016650.html