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;

}

结果:

在这里插入图片描述

相关内容

热门资讯

玩家必看科普透视挂!神兽透视挂... 玩家必看科普透视挂!神兽透视挂AI工具,神兽多功能好像真的有透视挂工具该软件可以轻松地帮助玩家将神兽...
揭秘透视挂!八戒透视挂AI软件... 揭秘透视挂!八戒透视挂AI软件,八戒多功能本来是真的有透视挂软件八戒脚本下载中分为三种模型:八戒挂靠...
重磅来袭外挂!葫芦岛爱玩麻将外... 重磅来袭外挂!葫芦岛爱玩麻将外挂AI攻略,葫芦岛爱玩麻将多功能确实是真的有外挂攻略1、葫芦岛爱玩麻将...
玩家必看科普辅助器!龙娱辅助器... 玩家必看科普辅助器!龙娱辅助器AIapp,龙娱多功能其实是有辅助器app1、下载好龙娱透视辅助下载之...
玩家必备教程透视挂!众乐乐透视... 玩家必备教程透视挂!众乐乐透视挂AI攻略,众乐乐多功能真是是真的有透视挂攻略1、点击下载安装,众乐乐...
发现玩家透视挂!南京麻将透视挂... 发现玩家透视挂!南京麻将透视挂AI软件,南京麻将多功能果然存在有透视挂软件1、不需要AI权限,帮助你...
分享一款透视器!聚闲游戏透视器... 分享一款透视器!聚闲游戏透视器AI方法,聚闲游戏多功能好像真的有透视器方法1、该软件可以轻松地帮助玩...
一分钟揭秘辅助!会星盟辅助AI... 一分钟揭秘辅助!会星盟辅助AI脚本,会星盟多功能切实是真的有辅助脚本1、该软件可以轻松地帮助玩家将会...
玩家爆料辅助器!杜鹃花辅助器A... 玩家爆料辅助器!杜鹃花辅助器AI攻略,杜鹃花多功能一贯有辅助器攻略亲,关键说明,杜鹃花透视脚本安卓赛...
我来分享辅助器!兴动游戏辅助器... 我来分享辅助器!兴动游戏辅助器AI教程,兴动游戏多功能都是有辅助器教程兴动游戏能透视中分为三种模型:...