能介绍下吗
谢谢!
请教为什么许多函数的形参是结构体类型
答案:3 悬赏:60 手机版
解决时间 2021-02-20 05:16
- 提问者网友:暮烟疏雨之际
- 2021-02-19 23:37
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-02-20 00:53
结构体或者类可以封装一系列的成员(变量或函数)进去。
当你在函数参数传递时,如果有很多变量需要传递的话,一个个列出来,形参表将会非常长,编程容易出错,生成的代码效率也很低。此时如果将一组参数用一个结构体来封装的话就非常方便,你只要传递该结构体的指针或者引用就行了。当然,如果你喜欢的话,复制传递整个结构体也可以的。
当你在函数参数传递时,如果有很多变量需要传递的话,一个个列出来,形参表将会非常长,编程容易出错,生成的代码效率也很低。此时如果将一组参数用一个结构体来封装的话就非常方便,你只要传递该结构体的指针或者引用就行了。当然,如果你喜欢的话,复制传递整个结构体也可以的。
全部回答
- 1楼网友:鱼芗
- 2021-02-20 04:10
根据具体应用会有不同的结构定义,比如一个坐标可以用POINT来表示。
- 2楼网友:深街酒徒
- 2021-02-20 02:30
int myint会在内存中开辟一个4字节的空间
你将myint的地址传给test函数
那么test函数将认为这是一个struct的首地址
前面定义struct node的结构为4个字节的num,6个字节的char[](由于一般32位的程序的内存空间要对其4字节,所以6字节的char[]可能要占用8个字节的空间),4个字节score
test函数仍然按照约定的格式进行操作,将myint开始单元的前4个字节填入数字100,然后接下来的字节填入hehe的ascii码,字符串结束符等,然后空2个字节的位置(字对齐原则),最后在将4字节的空间填入100
由于myint的首地址和mynode的首地址不同,所以填写时会发生错位现象
你要是进一步的测试,可以显示各个变量的地址看看,能帮助你理解,显示地址可以用printf("%p",&a)或printf("%d",&a)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯