二级指针

本文介绍了二级指针的概念及其使用场景,通过示例说明了如何利用二级指针在函数内部为外部指针分配内存并赋值。同时对比了一级指针传递参数时的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二级指针就是指向指针的指针,一般用于函数内部对指针进行创建、赋值等操作。
例:

void Func1(int ** ip)
{
    *ip = new int[4];
    for (int i = 0; i < 4;)
        (*ip)[i] = i++;
}

void Func2(char * pc)
{
    pc = "func in";
}

int main()
{
    char * pc = "func out";
    Func
    Func2(pc);
    printf("%s \n", pc);

    int * ip;
    Func1(&ip);
    for (int i = 0; i < 4;)
        printf("%d \n", ip[i++]);
    return 0;
}

运行结果:
这里写图片描述

针对Func2,函数会申请临时变量来代替传入的参数,也就是说Func2在执行如下代码:

char * temp = pc;
temp = "func in";

所以最后并没有改变外部指针指向的存储空间。

针对Func1,传入二级指针,在函数内部申请内存并赋值,可以把指针的数据导出到函数外部。

一般二级指针常用于在函数内部对外部指针进行存储空间申请和赋值操作,如对句柄操作等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值