指针的总结

一、指针总结

  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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值