[C++]1.指针的学习

来源:互联网 发布:sopcast网络电视安卓版 编辑:程序博客网 时间:2024/06/06 20:11

c++中的指针代表的是内存中的一段地址,通过指针可以直接访问内存中的具体的地址。

1.定义

指针的定义格式:

类型 *变量值;int *pint;//eg.声明了一个整型的指针变量;

2.初始化

指针在声明的时候最好进行初始化。初始化的方式如下:

int *pstr=NULL;

NULL是一个在c++标准库中定义为0的指针常量。内存地址中0表示的地址是不可访问的,也就是说对内存地址为0的指针变量进行取值操作时将会出错。
下面是NULL指针常量的一个例子:

#include <iostream>using namespace std;int main(){int *pstr=NULL;cout<<"pstr value is:"<<pstr<<endl;//(1)cout<<"*pstr value is:"<<*pstr<<endl;//(2)}

运行可以看到程序出错,注释语句(2)可以看到代码正常运行输出为:

pstr value is:0

3.取值操作和取址操作

取值操作符是*,取址操作符是&。
如果对着指针变量执行取值操作,比如*pstr,得到的将是pstr指针指向的内存地址保存的值;而对变量执行取址操作,比如&i,得到的将是变量i的地址。
下面通过一个实例来介绍两者的区别:

#include <iostream>using namespace std;int main(){int i=100;int *pstr=&i;cout<<"the value of i is:"<<i<<endl;cout<<"the value of pstr is:"<<pstr<<endl;cout<<"the value of *pstr is:"<<*pstr<<endl;cout<<"the address of i is:"<<&i<<endl;}

可以看到类似的输出:

the value of i is:100the value of pstr is:009AF9E4the value of *pstr is:100the address of i is:009AF9E4

i的值是100;pstr的值是保存i的地址;*pstr对指针变量pstr进行取值操作,得到是pstr指针变量指向的内存地址保存的值;&i表示的是对变量i进行取址操作,得到的是变量i在内存中的保存地址。

4.指针的指针

指针的指针指的是对指针变量执行取址操作,得到的是变量的指针的地址。
例子如下:

int i=10;//声明变量iint *pstr=&i;//获取变量i的地址初始化指针变量pstrint **pstr1=&pstr;//获取指针变量pstr的值初始化指针的指针变量pstr1

5.指针和数组

内存中数组是在一段连续的地址中保存的,指针和数组在某些情况下是可以互换的,所以大多数时候能用指针的地方就能用数组。
声明了一个数组之后,数组名是一个常量,指是数组中第一个值的地址。
指针和数组的操作如下:

int var[3]={100,200,300};int *pvar=var;for(int i=0;i<3;i++){      cout << "Address of var[" << i << "] = ";      cout << ptr << endl;      cout << "Value of var[" << i << "] = ";      cout << *ptr << endl;      // 移动到下一个位置      ptr++;}

可以看到类似的输出:

Address of var[0] = 014FFAACValue of var[0] = 100Address of var[1] = 014FFAB0Value of var[1] = 200Address of var[2] = 014FFAB4Value of var[2] = 300

以上,就是对指针的一些基本的学习。只要记住地址是门牌,值是住户就行了,根据地址可以找到住户;由住户可以拿到地址;而邮编就是地址的地址,根据邮编能找到地址,根据地址又能拿到邮编。

0 0
原创粉丝点击