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

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:100
the value of pstr is:009AF9E4
the value of *pstr is:100
the address of i is:009AF9E4

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

4.指针的指针

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

int i=10;//声明变量i
int *pstr=&i;//获取变量i的地址初始化指针变量pstr
int **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] = 014FFAAC
Value of var[0] = 100
Address of var[1] = 014FFAB0
Value of var[1] = 200
Address of var[2] = 014FFAB4
Value of var[2] = 300

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值