济南哪个网络公司建网站好,网络组建与维护实训报告,做网站用什么前端框架,做婚礼策划的网站一、数组指针
顾名思义#xff0c;数组指针就是指向数组的指针。形如#xff1a;int (*p)[10]; 注意#xff1a;[]的优先级要高于*号的#xff0c;所以必须加上#xff08;#xff09;来保证p先和*结合。
数组指针的使用
int arr[10] {0};
int (*parr)[10] arr;…一、数组指针
顾名思义数组指针就是指向数组的指针。形如int (*p)[10]; 注意[]的优先级要高于*号的所以必须加上来保证p先和*结合。
数组指针的使用
int arr[10] {0};
int (*parr)[10] arr; //数组指针的使用| | || | || | parr指向数组的元素个数| parr是数组指针变量名parr指向的数组的元素类型二、二维数组传参的实质
首先我们再次理解⼀下二维数组二维数组起始可以看做是每个元素是⼀维数组的数组也就是二维数组的每个元素是⼀个⼀维数组。那么二维数组的首元素就是第⼀行是个⼀维数组。 ⼆维数组传参本质上也是传递了地址传递的是第⼀行这个⼀维数组的地址那么形参也是可以写成指针形式的。
#include stdio.h
void test(int (*p)[5], int r, int c)
{int i 0;int j 0;for(i0; ir; i){for(j0; jc; j){printf(%d , *(*(pi)j));}printf(\n);}
}int main()
{int arr[3][5] {{1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7}};test(arr, 3, 5);return 0;
}⼆维数组传参形参的部分可以写成数组也可以写成指针形式。
三、函数指针
根据前面学习整型指针数组指针的时候我们的类比关系我们不难得出结论函数指针变量应该是用来存放函数地址的可以通过地址能够调用函数的。
int (*pf) (int x, int y)| | || | || | pf指向函数的参数类型和个数的交代| 函数指针变量名pf指向函数的返回类型int (*) (int x, int y) //pf函数指针变量的类型 函数指针的使用
#include stdio.h
int Add(int x, int y)
{return xy;
}
int main()
{int(*pf)(int, int) Add;printf(%d\n, (*pf)(2, 3));printf(%d\n, pf3(3, 5));//这两种方式均可以return 0;
}四、函数指针数组及其应用
把函数的地址存到⼀个数组中那这个数组就叫函数指针数组。定义形式int (*parr1[3])();
转移表
#include stdio.h
int add(int a, int b)
{return a b;
}
int sub(int a, int b)
{return a - b;
}
int mul(int a, int b)
{return a*b;
}
int div(int a, int b)
{return a / b;
}
void menu()
{printf(*************************\n);printf(*****1:add 2:sub ****** \n);printf(*****3:mul 4:div *******\n);printf(*****0:exit ****** \n);printf(*************************\n);
}
int main()
{int x, y;int input 0;int ret 0;int(*p[5])(int x, int y) { 0, add, sub, mul, div }; //转移表 do{printf( 请选择 );scanf(%d, input);if ((input 4 input 1)){printf( 输⼊操作数 );scanf( %d %d, x, y);ret (*p[input])(x, y);printf( ret %d\n, ret);}else if(input 0){printf(退出计算器\n);}else{printf( 输⼊有误\n ); }}while (input);return 0;
}