刷野打怪上王者·C++篇·第11期·指针&引用

参考链接

RUNOOB.COM

指针

    要想成为一名优秀的程序,学会指针是必不可少的技能。合理利用指针在写项目时,很大程度能够提高你程序的执行效率。上来就把指针吹的很牛,我们现在来看怎么使用吧。我们前面讲了,变量名其实对应内存中一块地址,并且每个内存位置都定义了&来访问内存地址。    那么什么是指针呢?其实指针也是一个变量,不过这边变量存储的是内存地址。使用方式:

数据类型 *变量名; //任何数据类型都可以

下面我们通过程序来实例分析:

#include <iostream>
using namespace std;   //命名空间
int main()
{
	int iVar = 2;         //初始化变量
	int *iPointVar = NULL; //声明空指针

	cout << "输出变量iVar对应的地址:" << &iVar << endl;

	iPointVar = &iVar; //变量iPointVar指向iVar的地址,这样它就得到该地址对应的数值

	cout << "输出变量iPointVar对应的地址:" << iPointVar << endl;
	cout << "输出变量iPointVar对应的数值:" << *iPointVar << endl;  //要想访问指针对应的数值,则只需要在指针变量前添加*

	getchar();
}

运行结果

输出变量iVar对应的地址:001BFCB8
输出变量iPointVar对应的地址:001BFCB8
输出变量iPointVar对应的数值:2

上面程序是指针基本而且实用的用法,关于解释已经在程序当中注释。下面加大一点难度,将数组的首地址传递到函数中的形式参数,对数组里面的数据进行修改:

#include <iostream>

using namespace std;
//声明函数
int changeArrayFun1(int *iTmpAddr, int size);

int main()
{

	int iArrayVar1[5] = {0, 1, 2,  3, 4}; //初始化一维数组
	int iArrayVar2[2][3] = { 1, 2, 3, 4, 5, 6 }; //初始化二维数组

	changeArrayFun1(iArrayVar1, 5);

	int *iPointVar = iArrayVar1;
	for (int iId = 0; iId < 5; iId++)
	{
		cout << *iPointVar << "  ";
		iPointVar++;
	}
	
	getchar();
}
int changeArrayFun1(int *iTmpAddr, int size)
{
	for (int iId = 0; iId < size; iId++)
	{
		*iTmpAddr =1;
		iTmpAddr++;
	}
	return 1;
}

运行结果

1  1  1  1  1

:指针是好东西,一定要玩转。

引用

   引用说白了就是变量的另外一个名字,在直接点就是一个人有两个名字。那大家肯定会说,指针不是也可以吗?但是指针这个不专一,它可以指向任意一个地址,并且随时都可以修改。但是引用则不同,只有在初始化的时候能够赋值,其它地方都不能赋值。

#include <iostream>

using namespace std;

int main()
{

	int iVar1 = 3; //初始化变量
	int &iVarSame = iVar1; //初始化引用

	cout << "iVarSame = " << iVarSame << " iVar1 = " << iVar1 << endl;
	getchar();
}

运行结果

iVarSame = 3 iVar1 = 3
发布了176 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/CSS360/article/details/104108441