二级指针的使用

有时候,我们需要在函数体的内部申请内存空间并初始化,然后将内部申请的存储空间交付给外部指针来引用,这时候,我们可以使用二级指针作为申请空间的函数的参数来实现。


main.c文件:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma pack(push,1)
typedef struct userInfo{

    char a; //1字节
    int b;  //4字节
    short c;//2字节
    char d; //1字节
    char e; //1字节

} YF_userInfo;
#pragma pack(pop)

void addUserInfo(YF_userInfo **info);

int main(int argc, const char * argv[]) {

    YF_userInfo *userInfo = NULL;

    addUserInfo(&userInfo);

    printf("change a:%d\n",userInfo->a);
    printf("change b:%d\n",userInfo->b);
    printf("change c:%d\n",userInfo->c);
    printf("change d:%d\n",userInfo->d);
    printf("change e:%d\n",userInfo->e);

    free(userInfo);
    return 0;
}

/**
 *  注意:这里必须使用二级指针,如果使用一级指针的话,同级指针之间赋值
 *  是以值传递的方式传递,这样会导致外部传入的指针无法获得内部申请的内存空间,
 *  也就无法使用内部申请的空间内容。
 */
void addUserInfo(YF_userInfo **info){

    *info = (YF_userInfo *)malloc(sizeof(YF_userInfo));
    memset(*info,0,sizeof(YF_userInfo));

    YF_userInfo *userInfo = *info;

    userInfo->a = 1;
    userInfo->b = 10;
    userInfo->c = 5;
    userInfo->d = 9;
    userInfo->e = 3;

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值