C语言第九篇:指针 (上)
指针
指针变量的定义与使用
1
指针变量的定义
指针变量的定义格式为:
类型说明符 *指针变量名 [=初值];
要同时定义两个指针变量:
int *p1=NULL,*p2=NULL;
(NULL是c语言中预定义的空指针关键字,它作为一个特殊的指针,表示不指向任何对象)
定义指针变量时要注意以下几点:
(1)类型说明符表示该指针变量所指向的变量的数据类型。
(2)定义指针变量时,指针变量名前必须有一个“ * ”号,表示定义的变量是指针变量。
(3)指针变量在定义时允许对其初始化。
例如:
int a=8;
int p=&a;
2
指针变量的使用
两个重要运算符:
(2):指针运算符,后面只能接指针变量。用于访问指针变量所指向的变量。如:*p表示访问指针变量p所指向的变量的内容。
对变量a有两种访问方式:
(1)直接访问。b=a;
(2)通过指针变量间接访问。b=*p;
3
指针的运算
(1)指针和整数的加减运算:
可以通过指针与整数的加减运算来移动指针p,实现对不同数据单元的访问操作。对不同的数据类型,移动的单位长度不同。单位长度一般是指针所指向的变量的数据类型长度。
格式一:p=p+n;
格式二:p++;
格式三:++p;
注意:
也就是指针所指向的变量在内存中所占的字节数。
(2)指针和指针的赋值运算:
4
指向指针的指针
关系:
(1)*二级指针变量:代表所指向的以及指针变量。如:*q就代表p;
(2)**二级指针变量:代表它所指的一级指针变量所指向的变量。如:**q代表a;
(3)*一级指针变量:代表它所指向的变量。如:*p代表a。
指针与数组
通过指针引用一维数组元素:
1
指向一维数组首元素的指针
假设指针p指向一维数组a的第一个元素a[0]。则:
p+1: 使p指向下一个元素a[1].
p+i:使p指向元素a[i].
注意!!!
(1)可以使用*(p+i)访问元素a[i]。
(3)指向数组的指针变量也可以带下标,如:p[i]与*(p+i)和*(a+i)等价,表示元素a[i]。
由此可知:当指针变量p指向一维数组a,即指向一维数组的第一个元素a[0]后,数组的第i+1个元素有以下4种写法:
a[i] ; p[i] ; *(a+i) ; *(p+i) 。
&a[i] ; &p[i] ;a+i ; p+i ;
2
指向一维数组非首元素的指针
举例:
(1)利用指向数组元素的指针输出数组a的各个元素。
排版:林霖
整理:何佳柠
审核:苏泳 陈司