前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C-二级指针的作用

C-二级指针的作用

作者头像
随心助手
发布2021-03-23 11:44:50
1.1K0
发布2021-03-23 11:44:50
举报
文章被收录于专栏:nginx遇上redis

C语言中不存在引用,所以当你试图改变一个指针的值的时候必须使用二级指针。

1. 当不用指针时,参数传入子函数的过程为值传递,子函数中修改的局部变量的值对原来的实参并没有影响。

2. 当用一级指针时,参数传入子函数的过程为地址传递, 子函数的实际操作是对指针的操作,那就可以通过子函数中对于实参指针的修改达到修改实参的值的目的。

我们通过传递指针来达到修改一个值的目的。那么当你需要修改一个指针的时候 呢,这个时候我们就需要指针的指针(二级指针):

3. 当用二级指针时,是为了修改一个指针

int fun() {

int *p;

int m;

m = init1(&p);

return m;

}

int init1(int **a) {

*a = malloc(50);

return 1;

}

fun()函数通过调用init1()函数实现给p分配内存空间的目的。

p为一个指针,&p就是指向指针p的一个指针(二级指针),

通过把&p传递给init1()函数,此时二级指针a=&p,所以说a是指向指针p的一个指针。

那么对于*a的操作,实际上就是对于指针p的操作,达到了修改指针的目的,这样fun()就可以通过init1()函数来分配内存空间了。

关于值传递:

指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档