书目《C程序设计(第三版)》
-
(一)变量的指针和变量指针
1、变量的指针就是变量的地址;
2、指针变量是存放变量地址的变量,它用来指向另一个变量。 -
(二)指针变量的一般形式、赋值和使用
一般形式为:基类型 * 指针变量名
一般用取地址运算符(&)来赋值,与间接访问运算符(*)搭配使用。 -
(三)数组和指针
1、声明数组时,会自动生成一个指针变量(可称其为数组的伴随指针),其名字与数组相同,且指针指向数组中第0号元素的地址——这给数组的使用带来了很大的灵活性;
2、两种写法f(int arr[])和f(int * arr)是等价的(因为C语言中,指针法和下标法都可以访问一个数组),并且两个arr都可以再被赋值;
3、多维数组中各表示形式的具体含义(以二维数组a[][]为例):
表示形式 | 含义 |
---|---|
a | 二维数组名,指向一维数组a[0],即0行首地址 |
a[0],*(a+0),*a | 0行0列元素地址 |
a+1,&a[1] | 1行首地址 |
*(a+1),a[1] | 1行0列元素a[1][0]的地址 |
a[1]+2,*(a+1)+2,&a[1][2] | 1行2列元素a[1][2]的地址 |
*(a[1]+2),*(*(a+1)+2),a[1][2] | 1行2列元素a[1][2]的值 |
- (四)有关指针的数据类型的小结
定义 | 含义 |
---|---|
int i; | 定义整型变量i |
int * p; | p为指向整型数据的指针变量 |
int a[n]; | 定义整型数组a,它有n个元素 |
int * p[n]; | 定义指针数组p,它由n个指向整型数据的指针元素组成 |
int (*p)[n]; | p为指向含n个元素的一维数组的指针变量 |
int f(); | f为返回整型函数值的函数 |
int * p(); | p为返回一个指针的函数,该指针指向整型数据 |
int (*p)(); | p为指向函数的指针,该函数返回一个整数值 |
int ** p; | p是一个指针变量,它指向一个指向整型数据的指针变量 |