【c语言】理解指针数组、数组指针、函数指针、函数指针数组、函数指针数组的指针
2018-06-22 16:12
295 查看
目录
1.指针数组
2.数组指针
3.函数指针
4.函数指针数组
5.函数指针数组的指针
一、指针数组
1.是一个存放指针的数组
2.举一个栗子
int *arr[10]; char *arr2[4]; char **arr3[5];
二、数组指针
1.int (*p)[10];
解释:p先和*结合,说明p是一个指针变量,然后指针指向的是一个大小为10个整型的数组。所以p是一个指针,指向一个数组,叫数组指针。
注意:[ ]的优先级高于号,所以必须加上()来保证p先和结合。
2.举例
int arr[10] = {0}; int *p1 = arr;//数组首元素的地址 int (*p2)[10] = &arr; //数组的地址放在数组
3.一维数组传参
void test() { int arr[10]=0; int *arr[20]=0; print(arr); print(arr2); } void print(int arr[])//对 {} void print(int arr[10])//对 {} void print(int *arr)//对 {} void print(int *arr[20])//对 {} void print(int **arr)//对 {}
4.二维数组传参
void test() { int arr[3][5]={0}; print(arr); } void print(int arr[3][5])//对 {} void print(int arr[][5])//对 {} void print(int (*arr)[5])//对 {} void print(int arr[][])//错 {} void print(int* arr[5])//错 {} void print(int *arr)//错 {} void print(int **arr)//错 {}
三、函数指针
1.存放函数地址的指针
void test() { printf("hehe\n"); } void (*ptest)()=test;//函数指针,存放test函数的地址 //ptest先和*结合,说明ptest是指针,指针指向的是一个函数,执行的函数无参数,返回值类型为void1
2.代码1 ((void ()( )0))();
解释:void (*)( )是一个函数指针,把0强制类型转换成函数指针,整个代码的意思是调用0地址出的函数。
代码2 void (signal(int,void()(int)))(int);
解释:1. signal是一个函数声明
2. signal函数的参数有2个,第一个是int,
第二个是函数指针,该函数指针能够指向的函数有一个int参数, 返回类型为void
3. signal函数的返回类型为函数指针,该函数指针能够指向的函数有一个int参数,
返回类型为void。
简化代码2
typedef void(*pfun_t)(int);//pfun_t是类型名 pfun_t signal(int,pfun_t);1
四、函数指针数组
1.把函数的地址存到一个数组中,这个数组就叫函数指针数组。
int *arr[10];//指针数组 int (*parr1[10])();//函数指针数组 //parr1先和[ ]结合,说明parr1是数组,数组的内容是int (*)()类型的指针1
2.用途:转移表
例如:计算器
int Add(int x, int y) { return x+y; } int Sub(int x, int y) { return x-y; } int Mul(int x, int y) { return x*y; } int Div(int x, int y) { return x/y; } int main() { int (*p )(int, int) = Add; int (*p1[4])(int, int) = {Add, Su b, Mul, Div};//函数指针数组 return 0; }
五、指向函数指针数组的指针
1.是一个指针,指针指向一个数组,数组的元素都是函数指针。
2.定义
int (*p )(int, int) = Add;//函数指针 int (*p1[4])(int, int) = {Add, Su b, Mul, Div};//函数指针的数组p1 int (*(*p2)[4])(int, int) =&p;//指向函数指针数组p1的指针p2阅读更多
相关文章推荐
- 【C语言基础】对指针数组,数组指针,函数指针, 函数指针数组,指向函数指针数组的指针的理解
- C语言:浅析指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解
- 个人理解:关于指针数组、数组指针、函数指针、函数指针数组、函数指针数组指针
- 关于指针数组、数组指针、及函数指针和指向函数指针数组的指针的一点理解
- 【C语言】理解指针数组 数组指针 函数指针
- 对指针数组,数组指针,函数指针数组,函数数组指针的一些简单理解
- C语言中的指针(指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针)
- 理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 什么是指针?关于指针的数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针的理解
- 指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针的理解
- 深入理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 【C】理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针之间的区别
- <C语言>“指针数组与数组指针+指针函数与函数指针”---区别理解
- 指针数组 ,数组指针 ,函数指针 ,函数指针数组 ,指向函数指针数组的指针 的理解
- C语言--函数指针与函数指针数组
- 函数指针与函数指针数组的简单理解以及vector