C++ 指针

指针是一种特殊的变量。它是用来存放某个变量的地址值的一种变量。这一点与一般变量不同。指针变量所表示的数据值是某个变量的在内存中的地址值。一个指针所存放的是某个变量的地址值,称为这个指针指向被存放地址的变量。指针存放哪个变量的地址值,它就指向那个变量。

指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,因为任何数据值的类型都是unsigned long int型的。由于指针度类型是它所指向的变量度类型,而所指向变量的类型不同,则指针的类型也不同。指针可以指向各种类型的变量还可以指向数组(或数组元素),可以指向函数,可以指向文件,还可以指向指针。

定义指针: int a(5);

                int *P = &a;

把一个值(内存的某个地址)赋值给指针需要使用“取地址”操作符(&)

int myInt = 904;

int *myPoniter;

myPointer = &myInt;

 

 

定义一个指针后,系统便给指针分配一个内存单元,各种不同类型度指针所被分配的内存空间的大小是相同的,因为不同类型的指针存放的数据值都是内存地址。

各类型的指针定义格式如下:

<类型>*<指针名>=<初值>,...;

如,int *p; //pi是一个int型指针

char *pd;   //pc是一个字符指针

double *pd;    //pd是一个double型指针

int(*pa)[5];      //pa是一个指向一维数组的指针,它指向5个int型元素的一维数组

int(*pf)();         //pf是一个指向类型为int型的函数的指针

int **pp;    //pp是一个指向int型指针的指针

 

 知道了某个变量在内存中的地址,就可以利用指针访问位于该地址的数据。这需要对指针做解引用(deference)处理--在指针名的前面加上一个星号*。

在某些场合只有通过指针才能改变某个变量的值。

 

引用不同于指针,它不是变量,它不占内存,它本身无内存地址,它的地址值是它引用的变量的地址值。引用通常被认为是另一种变量的别名。引用只是被引用的变量或对象的替身。一般定义引用时必须初始化。如:int a = 3;

int  &m= a; 这里m是一个引用,它是变量a的别名。所有的引用上所施加的操作,实质上就是在被引用者上的操作。

 

指针是通过地址间接访问某个变量,而引用是通过别名直接访问某个变量。引用必须初始化,一旦被初始化后不得再作为其他变量的别名。

指针的运算:

(1)赋值运算

(2)一个指针可以加减一个整型数

(3)在一定条件下,指针可以相减

(4)在一定条件下,指针可以比较

 

数组元素可以用下标表示,也可以用指针表示,采用指针表示往往优于下标表示。

如,int a[i] 指针表示为 *(a+i)

 

 

 

总结:

星号*有两种用途:

一是创建指针:int *myPointer = &myInt;

二是对指针进行解引用: *myPointer = 23;  //*myPointer = myInt

数组的名字同时也是一个指向其第一个元素的指针

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值