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没有被使用,那么这两个函数即便没有定义,但只要声明了函数原型,编译器也是不会报错的,
换句话说,数组内的两个函数只参与编译阶段,而不参与链接,所以只要有函数声明即可。

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

相关内容

热门资讯

“余华该续费了”:一场美丽误会... 转自:千龙网文学无形,却可以通过种种方式影响社会,带来种种意想不到温润人心的场面。“五一”假期期间,...
首届世界人形机器人运动会将于8... 转自:千龙网原标题:首届世界人形机器人运动会将于8月北京召开 足球、跳远、接力……人形机器人竞技倒计...
无人机穿越大理千年古塔“炸机”... 转自:千龙网据报道,5月5日晚,一段无人机穿越云南大理崇圣寺千年古塔时突然“炸机”失控的视频引发关注...
欧亚经济峰会呼吁各国通过对话解... 新华财经伊斯坦布尔5月7日电(记者王峰 秦彦洋) 第28届欧亚经济峰会7日在土耳其伊斯坦布尔开幕,与...
美联储决议全文:维持利率不变,... 美联储连续第三次会议按兵不动,表示不确定性进一步增加,失业率和通胀上升的风险均加剧。5月8日,美联储...
美联储宣布维持联邦基金利率不变...   美联储宣布将联邦基金利率目标区间维持在4.25%至4.50%之间,符合市场预期。这是今年1月以来...
AMD首席执行官苏姿丰称中国是...   AMD公司CEO苏姿丰周三表示,尽管面临出口管制和不断变化的关税政策,中国对半导体及人工智能产业...
四月外储规模上升 黄金储备连续... 国家外汇局5月7日数据显示,截至2025年4月末,我国外汇储备规模为32817亿美元,较3月末上升4...
纳入港股通标的 股价涨超4倍 ... 近期,山东墨龙H股被重新纳入港股通标的以及A股股票“摘帽”等原因,股价4个交易日最大涨幅超450%,...
FOMC声明:美国经济前景不确... 转自:财联社【FOMC声明:美国经济前景不确定性进一步增加】财联社5月8日电,美联储FOMC声明显示...
“教育+消费+传承”三力齐发 广发银行2024年度报告称,信用卡持续践行金融为民初心,共促乡村振兴发展。作为中国信用卡行业的先行者...
车主诉苦“保不起” 险企吐槽“... 我国新能源汽车产量已突破1000万辆,零售渗透率达52.3%,产业发展势头强劲,但新能源车险却深陷“...
多因素扰动 车企一季度业绩“喜... 在新能源转型、市场竞争加剧、产品周期更迭等多重因素交织影响下,2025年一季度,A股车企业绩“喜忧参...
上市券商年终分红豪掷387亿元... 证券时报记者马静2024年年报季已结束,上市券商的分红事项摆上日程。经历破纪录的中期分红和三季度特别...
宏观政策协同发力 经济呈现向好... 2025年一季度,随着各项宏观政策继续发力显效,中国经济开局良好,消费、投资等内需有所回暖,一般公共...
央企助力内蒙古新能源产业建设“...   证券时报记者 江聃  作为我国风光资源禀赋最丰富的地区,内蒙古在风光发电产业发展方面已探索出融合...
当前旱情四问 新华财经北京5月8日电(记者刘诗平、魏弘毅) 当前,陕西、河南、江苏、湖北、广西等省区存在重旱。其中...
公募基金迎重要改革 强化与投资...   证券时报记者 程丹  5月7日,中国证监会发布《推动公募基金高质量发展行动方案》,通过全面深化改...
海上风电“安全卫士” 在钢架间... 近日,在福建省福清市江阴产业园国家级海上风电研究与试验检测基地建设现场,国网福建电力施工人员正在15...
加大数字领域自主创新 推动实数... 在当今数字化浪潮汹涌澎湃的时代,加大数字领域自主创新力度,促进实体经济和数字经济深度融合发展,已成为...