Linux:指针作为函数参数实现间接赋值成立的三个条件
创始人
2025-05-29 21:42:04
0

指针作为函数参数实现间接赋值成立的三个条件:
1.调用函数中定义实参和形参,形参要比实参高一级
2.建立实参和形参的关联:把实参取地址赋值给形参
3.在被调函数中通过形参取*操作,间接修改实参的值。

多级指针实现间接赋值的步骤:
1.定义N-1级实参和N级形参,
2.N-1级实参的地址赋值给N级形参,
3.被调函数内部通过N级形参取*操作后,间接修改N-1级实参的值

以三级形参为例:
1.定义二级指针作为实参,定义三级指针作为形参
2.二级指针取地址赋值给三级形参
3.被调函数中,三级形参取*操作,然后间接修改二级实参的值。

多个指针指向同一片地址空间,用来做函数传参,是C语言都精华

内存地址空间的有效性:
被调函数可以使用调用函数的地址空间 调用函数能否使用被调函数的地址空间,要看被调函数生的的地址空间的生命周期是否已经结束

代码:

#include
#include
#include
int mysearch(char ***mp, char * filename, int len)
{
printf(“%s\n”,filename);
char ** p = malloc(sizeof(char *)*len);
int i = 0;
for(;i < len; i++)
{
p[i] = malloc(sizeof(char)*5);
sprintf(p[i],“%d %d %d”,i, i+1, i+2);
//strcpy(p[i],“hel”);
}
*mp = p;//调用函数中,把二级指针的地址赋值给三级形参指针的值

return 0;

}

int myfree(char ***mp, int len)//定义三级指针作为形参
{
int i = 0;
for(;i {
free((*mp)[i]);
(*mp)[i] = NULL;
}
free(*mp);
*mp = NULL;
return 0;
}

int main(int argc, const char * argv[])
{
char ** mp = NULL; //定义二级指针作为实参
char filename[] = “my file name”;
int len = 10;

int ret = mysearch(&mp,filename,len);//二级指针取地址赋值给三级形参int i = 0;
for(;i<10;i++)
{printf("%s\n",mp[i]);
}
myfree(&mp,len);
return 0;

}

结果:

在这里插入图片描述

相关内容

热门资讯

花样年控股:拟约452.8万美... 1月2日晚间,花样年控股(01777.HK)公告称,公司、期货有限公司(TFISF)与买方Splen...
广州新机场来了,大湾区世界级机... 2026第一个流量炸裂的城市出现了。几乎伴随着新年钟声,重磅消息不断传来,千年商都广州又带来“亿点点...
林清轩举办上市答谢会暨沙龙,共... 1月2日,林清轩在上海举办上市答谢会,活动由两场主题沙龙拉开序幕,汇聚行业专家、财经作家、投资人及权...
一创投行领罚1698万背后:2... 本文来源:时代周报 作者:特约记者 井爽又有券商收到监管罚单。2025年12月24日,江苏证监局披露...
男子网购2.4公斤银条迟迟未发... 新年伊始,回顾2025年全球资产年度盘点,白银堪称亮眼。2025年,现货白银价格从年初约29美元/盎...
丢掉幻想 美西方见不得一个统一... 自解放军围台岛演习以来,外界蝇声蛙噪不绝于耳。眼见“小弟”们着急上火,美国国务院终于坐不住了,跳出来...
新年首个交易日美股涨跌互现:中... 2026.01.03本文字数:1488,阅读时长大约3分钟作者 |第一财经2日,美股涨跌不一。截至收...
港股开门红,这板块又火了 //港股开门红 //1月2日,新年首个交易日,港股小幅高开后走高。恒生科技指数一度涨超4%,迎来“...
23亿天价索赔背后:极氪与欣旺... 《投资者网》引线 | 吴微2025年12月,欣旺达(300207.SZ)发布的一则公告,揭开了中国新...
拿什么来拯救房地产? 文:泽平宏观团队现在社会上对地产有两种声音争论激烈:一边是“彻底没救派”,认为泡沫破灭、颓势难逆;另...