C语言中使用函数进行指针变量地址传递,即二级指针

C语言中使用函数进行指针变量的地址传递

函数原型

AxisCB是一个数组,函数作用是将AxisCB[axisIndex].func.PLSR的地址保存到指针变量plsrFunc中,从而能通过plsrFunc直接拿到地址中的值,隔离了AxisCB数组,达到了函数接口的使用目的而不用给别人其他文件

/* 函数的定义 */
MCStructAxisCB AxisCB[MAX];

typedef struct
{
	int a;
	int b;
}MCStructAxisFunc;


typedef struct {
	MCStructAxisFunc func;
}AxisCB

/* 第一种方法 */
void getfuncAddr1(INT16U index,void* func)
{
	func = &AxisCB[index].func
}
/* 第二种方法:二级指针,指针的地址 */
void getfuncAddr2(INT16U index,MCStructAxisFunc** func)
{
	MCStructAxisCB* pAxis = AxisCB + index;
	*func = &(pAxis->func)
}

INT8U index = 0;

/* 函数的调用 */
MCStructAxisFunc* pfunc = NULL; //临时变量pfunc

/* 通过函数接口拿到AxisCB数组中的func地址放到pfunc中去 */
void getfuncAddr1(index,pfunc); //第一种方法,错误,没拿到地址

void getfuncAddr2(index,&pfunc); //第二种方法,正确,传址调用

两种方法比较

很显然,第二种方法正确,既然想要使用指针变量,那么就需要得到指针的地址,即函数形参需要(数据类型*)* (数据类型*)代表这是一个指针,(数据类型*)*代表取指针的地址,这样就可以拿到指针的地址,从而得到指针(通过函数内部的解引用操作),得到指针后,便可以对指定的内存进行操作了

注意点

1.首先是需要传二级指针
2.参数传入的时候需要加& ,这样才能拿到指针的地址
3.函数内部需要对指针的地址进行解引用才能拿到指针的值

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值