参考链接
指针
要想成为一名优秀的程序,学会指针是必不可少的技能。合理利用指针在写项目时,很大程度能够提高你程序的执行效率。上来就把指针吹的很牛,我们现在来看怎么使用吧。我们前面讲了,变量名其实对应内存中一块地址,并且每个内存位置都定义了&来访问内存地址。 那么什么是指针呢?其实指针也是一个变量,不过这边变量存储的是内存地址。使用方式:
数据类型 *变量名; //任何数据类型都可以
下面我们通过程序来实例分析:
#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
更多《计算机视觉与图形学》知识,可关注下方公众号: