vlambda博客
学习文章列表

C语言第九篇:指针 (上)


指针


  本期内容围绕指针展开,指针是让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;

C语言第九篇:指针 (上)

3

指针的运算


(1)指针和整数的加减运算:

可以通过指针与整数的加减运算来移动指针p,实现对不同数据单元的访问操作。对不同的数据类型,移动的单位长度不同。单位长度一般是指针所指向的变量的数据类型长度。

格式一:p=p+n;

格式二:p++;

格式三:++p;

注意:

也就是指针所指向的变量在内存中所占的字节数。

(2)指针和指针的赋值运算:

C语言第九篇:指针 (上)

4

指向指针的指针


关系:
(1)*二级指针变量:代表所指向的以及指针变量。如:*q就代表p;
(2)**二级指针变量:代表它所指的一级指针变量所指向的变量。如:**q代表a;
(3)*一级指针变量:代表它所指向的变量。如:*p代表a。

指针与数组

C语言第九篇:指针 (上)


通过指针引用一维数组元素:


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的各个元素。





排版:林霖

整理:何佳柠

审核:苏泳 陈司