永发信息网

c语言中,函数的形参什么时候必须是指针

答案:3  悬赏:30  手机版
解决时间 2021-12-25 00:02
c语言中,函数的形参什么时候必须是指针
最佳答案
情况1 需要读入的数据是比较大的数据,使用指针作为参数可以节省堆栈
比如 定义1个结构体
typedef struct test
{
char buffer1[10000];
char buffer2[10000];
//后面还有一大堆成员
}test_ts;
void Func1(test_ts t1)
{
//函数体是对t1成员进行Read处理
}
void Func2(test_ts *t1)
{
//函数体是对t1成员进行Read处理
}
上面2个函数功能其实一样,但函数Func2参数只是一个指针占的空间就4 Byte,
Func1参数是一个结构体,占的空间就看成员多少,但例子的使用的堆栈最少20000Byte了。

情况2 需要对数据进行改写
一般对应的数据是数组或结构体数据。
比如memset函数函数,用于把传入指针的数据写入对应的数据。
具体函数体内容不贴了,baidu查下吧。
例如还是这个结构体test_ts
test_ts t2;
如果需要将t2的每个成员初始化成0,可以把每个成员挨个赋值成0。
但如果用下面这样代码
memset(&t2,0,sizeof(t2));
一行搞定
全部回答
当你需要改变传递进来的参数的数值时 要传给指针
兄弟,那个不是一级指针,那是指针数组 指针数组作为函数形参时会自动转换为指针的指针,也就是你说的二级指针 char **p=book;从这一行也能证明我说的,自动转换 特别注意:它只会转换数组的最内层(我有点分不清内外) int arr[2][6]; int (*aa)[6] = arr;//对 //int *aa1[6] = arr;//错 //int (*aa2)[2] = arr;//错 //int (*aa3)[] = arr;//错 //int *aa4 = arr;//错 //int **aa5 = arr; //错
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
收养流浪猫要注意哪些事项?
怕发炎还没发炎,可以吃阿莫西林预防吗
单选题关于泡菜发酵过程的叙述,错误的是A.发
我是如何引导孩子做到上课认真听讲的(原创)
怎么用微波炉加热冰冻粽子
单选题记载了希波战争和一些东方国家的历史情
宜搜小说收费了,也不更新,有其他免费小说软
请问12岁的男孩两眼纯近视125度,需要戴眼镜
三月十八是什么星座
违章查询决定书编号怎么能查出来
小米手机!小米账户是干嘛的?
鸡蛋放在家里打开蛋黄没凝固!还有血丝!坏了吗
当前“恶搞”作品在网络上可谓“新作不断”,
夺宝奇兵怎么玩?,
重庆工商局年检取消了,那企业年报网上申报怎
推荐资讯
我以前谈过一个男朋友,,半年后我们又见面了
亲爱的爱情中傅君颜为什么选择饰演肖莫笑?
开实体酸奶店需要什么证件
术能多维饮料多少钱
腊肉怎么洗
猪肉饺子馅怎么调配
下图中虚线是晨昏线,①点以西是东半球,①点
单选题“You’dbetter________toomuchmeat.Y
网络适配器 wifi link 5100 agn 是叉号 怎么
阳历18阴历17能当兵吗
有四个三角形,分别满足下列条件:①两角之和
新锋社区居委会地址在什么地方?想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?