c拾遗-二级指针、数组内函数
创始人
2024-04-24 19:18:15
0

1、c语言中二级指针

用途1:一般被用在多维数组的环境中,一个二级指针可以指向一个二维数组;
用途2:二级指针作为函数参数使用时,可以通过函数修改实参指针值的目的。

对于第二点用途的理解:
c语言的函数调用中存在值传递和址传递,一般使用指针达到地址传递的目的。
但实际上指针变量本身也是存在实参和形参之分,只不过由于实参指针和形参指针指向了同一区域,
所以可以达到地址传递的目的,即通过修改形参指针所指向内存空间的内容,进而达到修改实参指针指向的区域。

一旦当我们需要在函数调用中修改指针变量本身时,就需要使用二级指针了:
比方说实参指针是一个空指针,而通过形参来分配内存空间,并将该空间返回给实参;

void GetMemory(char **p,int num)
{*p=(char*)malloc(sizeof(char)*num);     //此时*p就变成了是形参本身的地址
}
void main()
{char *str=NULL;GetMemory(&str,100);                    //&str是实参的地址,所以实参和形参之间就可以直接调用strcpy(str,"hello");free(str);
}


上述代码的易错写法是什么样呢:

void GetMemory(char *p,int num)
{p=(char*)malloc(sizeof(char)*num);       //p是形参指向的地址
}
void main()
{char *str=NULL;GetMemory(str,100);                      //str是实参指向的地址,不能通过调用函数来申请内存strcpy(str,"hello");
}


结论:
指向指针的指针的作用: 当要修改实参指针的指向的时候,形参必须使用指向指针的指针。
当修改的是实参指针指向的内容时,则形参只需是指针即可


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


2、数组内函数不参与连接
今天碰到一个很奇怪的问题,搞了半天,只把最后的发现记录一下。

struct TEST_TYPE stTest[] =
{
    {"first", first_func},
    {"seconde", second_func}
}

在该结构体数组中,引用了两个函数first_func和second_func
如果这个数组stTest没有被使用,那么这两个函数即便没有定义,但只要声明了函数原型,编译器也是不会报错的,
换句话说,数组内的两个函数只参与编译阶段,而不参与链接,所以只要有函数声明即可。

虽然在数组中引用了这两个函数,但是这个数组并没有被使用,所以出现了上面的现象,一旦这个数组被使用,那么在链接阶段就需要函数定义。

相关内容

热门资讯

文华已任新疆维吾尔自治区发改委... 近日,新疆维吾尔自治区发展和改革委员会官网更新后显示,文华已任自治区发改委党组书记、副主任,自治区对...
薪水合心是什么意思? 薪水合心是什么意思?就是祝你的工资能让能让你放心。比较适合你,称心如意发的工资很适合心意,能满足自己...
在津银行机构通过投贷联动模式累... 转自:新华财经新华财经天津7月9日电(记者李亭)记者9日从天津市银行业重点合作投资机构参考清单202...
国网甘肃电科院开展国内首(台)...   7月6日,国网甘肃电科院技术人员完成国内首(台)套C4环保型330千伏断路器设备制造阶段关键点出...
警察冲上门强制拔卡断网!差两秒... 01:23封面新闻记者 于婷“再晚一步这笔钱可能就进了骗子的账户!”近日,成都武侯区的王婆婆(化名)...
“毛孩子”催生3000亿“家人... 转自:邯郸网络广播电视台随着人们生活水平的提高和消费观念的转变,宠物已从“动物伙伴”变为情感寄托和家...
荣耀“阿尔法之旅”联结九国青年...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 7月8日,一场旨在促...
关于宫崎骏的书,哪本好,大家推... 关于宫崎骏的书,哪本好,大家推荐一下评论一下吧,谢谢楼主你好,我曾经买过一本书叫《宫崎骏的迷路森林》...
纳入失信名单前给予企业宽限期,...   长沙晚报掌上长沙7月9日讯(全媒体记者 黄能)7月9日,湖南省高级人民法院联合省发展改革委、省工...
迪丽热巴利剑玫瑰首部打拐刑侦剧 【#迪丽热巴利剑玫瑰首部打拐刑侦剧#】7月9日,@Dear-迪丽热巴 @金世佳 主演的电视剧《利剑...