指针(三)

2022-04-11 19:27:48 浏览数 (1)

指向指针的指针

指向指针的指针

一个指针可以指向整型变量、字符变量,当然也可以指向指针变量。

用一个指针变量A存放另一个指针变量的地址,称指针变量A为指向指针的指针变量。

指向指针的指针变量定义形式:

类型说明符 **指针变量名;

例如:int **p;

指针变量作函数参数

指针变量作函数参数

函数的参数类型可以是任何合法的C语言类型。

指针变量也可以作为函数参数。

(1)形参为整数变量的交换

(2)形参为指针变量的交换

(3)C语言中实参和形参之间的数据传递是单向的“值传递”方式,指针变量作为函数参数时也是如此,被调用函数中不可能通过改变形参指针变量的值来改变实参指针变量的值,但可以通过改变形参指针变量指向的值来间接改变实参指针变量指向的值。

返回指针的函数和指向函数的指针

返回指针的函数和指向函数的指针

函数返回值可以是任意合法的C语言数据类型,所以函数返回值也可以是指针类型

类型说明符 *函数名(参数列表);

例如:

int *fun(int x, int y);

除了有返回指针的函数之外,还有指向函数的指针。

函数在编译时会被分配一个入口地址,这个入口地址就称为函数的地址,将该函数地址赋给一个函数指针变量,该指针变量就可以指向这个函数。

定义形式:

类型说明符 (* 指针名)(参数列表);

例如:

int func(int x, int y);

int (*p)(int x, int y); /*p就是函数指针*/

p = func; /*函数指针p指向函数func()*/

调用方式:

函数指针名(实参列表);

例如:p(x, y);等价于func(x, y);

注意:

(1)定义了函数指针,需要将某个函数地址赋给该函数指针,然后才能通过函数指针调用函数

(2)将一个函数地址赋给函数指针时,该函数的特征必须与函数指针定义时相同,否则编译出错,函数特征是指函数的参数列表个数、类型、返回值类型。

0 人点赞