一、指针总结
int a = 10;
1. 一级指针int *p = &a;
2. 二级指针int **pp = &p;
3.指针数组 落脚点 数组-> const char* arr[2] = {"hello","world"};
4. 数组指针int arr[10]= {1,2}; 定义指针(指向一维数组的指针)
int(* pointer)[10];//数组指针 int arr[10] = {1,2}; //[40字节] int(*p)[10] = &arr; printf("%d\n",p); p++; //加整个数组大小 printf("%d\n", p); int *p1 = arr; //*(p1+1) <=> p1[1] printf("%d\n", p1); p1++; //加一个格子大小 printf("%d\n", p1); return 0;
5.函数指针
int(* operate)();(1)定义两个功能:add(int a,int b); mul(int a,int b);
* 从键盘输入 '*' '+' : 选择调用的函数//函数指针 //声明三个函数 int add(int a, int b); int mul(int a, int b); int operate(int(*pointer)(int,int),int a,int b); int main() { char op = '*'; int res; switch (op) { case '+': res = operate(add,10,20); printf("加法结果是:%d\n",res); break; case '*': res = operate(mul, 10, 20); printf("乘法结果是:%d\n", res); break; return 0; } int add(int a, int b) { return a + b; } int mul(int a, int b) { return a * b; } int operate(int(*pointer)(int, int), int a, int b) { return (*pointer)(a,b); // 函数调用结果 }
(2)简单理解:
// 函数指针 void fun1(char* str, int len) {} void fun2(char* a, int b) {} int main() { void (*pointer)(char*, int); pointer = fun1; pointer = fun2; return 0; }
//函数指针和typedef 结合 *****
typedef void (*POINTER)(char*, int); void fun1(char* str, int len) { } void fun2(char* a, int b) { } int main() { POINTER pfun1 = fun1; pfun1 = fun2; return 0; }
指针的总结
最新推荐文章于 2022-10-02 08:51:06 发布