博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针小结(摘自C++程序设计教程)
阅读量:3946 次
发布时间:2019-05-24

本文共 1537 字,大约阅读时间需要 5 分钟。

1.int *p;

p是一般指针,用于指向整形量。被指向的整形量可以是简单的整形量,也可以是一维整形数组或二维整形数组中的一个元素,因为数组的每一个元素都是整形量。int *类型的指针与一维整形数组名在数据类型上等价,即一维整形数组名是指针,其类型也是int *。注意,p是指针变量,其值可变;而数组名是指针常量,其值不可变。
2.int (p)[M];
p指向含有M个元素的一维数组。可指向每行含有M个元素的二维数组的一样,也就是说他是二维数组的行指针,p与二维数组名在数据类型上等价。若有定义“int a[N][M];”,则p和a的类型都是int (
)[M]。
例如:

int a[3][4],(*p)[4];p=a;		//将数组a的首地址赋值给指针p,p指向a[0]p++;		//正确,因为p是指针变量,p指向a[1],A行a++;		//错误,因为a是指针常量

A行运算结束后p指向a数组的下一行元素,即指向a[1]。a[1]是一个地址运算表达式,是“虚”的地址表示。所谓“虚”是指a[1]本身不占储存空间。请与下述第四点比较。

3.int *p[M];
p是指针数组,含有M个元素,每个元素都是整形指针。p指针的类型是int *[ ]。
4. int **p;
p是指向整形指针的指针。p指针的类型是int **,与整形指针数组名的类型是int *[ ]等价。
例如:

int *a[10],**p;p=a;p++;		//正确,因为p是指针变量,A行a++;		//错误,因为a是指针常量

A行运算结束后,p指向a数组的下一个元素,即指向a[1]。a[1]是具有储存空间的一个指针,是一个“实”的地址表示。所谓“实”是指a[1]本身占储存空间。

5. int (*p)(int,int);
p是一个函数指针,可指向参数是两个整形量并且返回整形量的函数。从语法形式上卡,本节中第2点、第3点定义二维数组行指针和指针数组是,使用的军事方括号,只有在定义指向函数的指针时,使用的是圆括号。
6.int *f(){…}
与前面的1~5点不同,这是函数定义(函数体内部的语句被省略了),f是函数名,它返回整形指针,即发挥值类型为int *。本节前面1~5节定义了五种不同类型的指针变量,而本函数定义知识制定函数的返回值类型是指针类型的量,并没有引入新的指针类型,知识将第1点中国定义的最普通的指针作为函数的返回值。可以类推,如果有函数定义 int **f(){…},则表示函数的返回值类型为指向整形指针的指针。
7.void类型指针
此类指针比较特殊,在用法上要注意以下两点。
(1)任何类型的指针都已直接赋值给void类型的指针,无须进行强制类型转换。如:

void *p1;int x,*p2=&x;p1=p2;

void类型指针也可以直接赋值给其他类型的指针,但最好进行强制类型转化,以明确表示指针的类型,例如:

p2=(int*) p1;

(2)不能对void指着进行算术运算。

8.空指针NULL
C++将斧蛤常量NULL的值定义为0,通常用来表示一个空指针。例如:

int *p=NULL;		//表示用空指针NULL初始化指针变量pint m=0;			//表示用整形常量0初始化整型变量m

C++规定,若一个指针值为NULL,他是空指针,不指向任何量。尽管NULL的值与0相同,但是两者的意义不同。假定指针变量为p,判断它是否为空指针的if语句可以使“if(p == NULL)”或“if(p!=NULL)”,强调p是指针变量。但不要写成“if(p==0)”或“if(p!=0)”,他们都影响程序的可读性,同理,也不要写成“if§”或“if(!p)”。

转载地址:http://mxowi.baihongyu.com/

你可能感兴趣的文章
Android UI控件组合应用之一:建立数据模型
查看>>
避免Andriod平台图片失真的图片形式
查看>>
Android之Gridview图片列表
查看>>
objdump的使用方法
查看>>
编译错误处理noproguard.classes-with-local.dex已杀死
查看>>
LTE - CSFB技术
查看>>
GSM链路层信令协议
查看>>
技术道德
查看>>
“需求为王”才是根本
查看>>
高效率的危害
查看>>
寻找边缘性创新
查看>>
让创意瞄准市场
查看>>
高效经理人应具有的八个重要习惯
查看>>
优秀的领导者能读懂人才
查看>>
大智若愚也是领导力
查看>>
android如何编译MTK的模拟器
查看>>
android如何添加AP中要使用的第三方JAR文件
查看>>
利用sudo命令为Ubuntu分配管理权限
查看>>
Ubuntu下几个重要apt-get命令用法与加速UBUNTU
查看>>
Ubuntu中网页各种插件安装命令
查看>>