鱼C论坛

 找回密码
 立即注册
查看: 2177|回复: 2

请求各位鱼油帮忙看一下

[复制链接]
发表于 2018-12-13 16:44:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 康小泡 于 2018-12-14 11:29 编辑
#include  <stdio.h>
#include  <string.h>

Struct  Student
{
int  sid;
char  name[200];
Int  age;
};

int  main()
{
struct  Student  st  =  {1000,  “zhangsan”,  20};
st.sid  =  99;   //第一种方式; 一般不用;

struct  Student  *pst;  //第二种方式;
pst  =  &st;
pst  ->  sid  =  99;   //pst  ->  sid等价于(*pst).sid,而(*pst).sid等价于st.sid,
               所以pst  ->  si等价于st.sid;
return  0;

}

为什么这一种赋值方式不推荐呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-13 19:13:36 | 显示全部楼层
这得看情况呀;都会用得着。

第1种事先得分配足够的内存空间,声明的时候就分配好了。

第2种指针的方式更灵活些;可以需要的时候分配内存空间。如果你经常扩充,删除等等当然用第2种好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-12-13 22:02:06 | 显示全部楼层
你现在写的是一个非常简单的例子,本地定义本地使用,两种方式没有任何区别。

如果结构体占用空间较大,在其他的函数中使用时,传递大的结构体会造成函数调用开销加大(需要将结构体全部压入栈中),同时如果在函数内部对传入的结构体进行修改,函数返回时,调用者空间内的变量值并未改变,得不到应有效果。

如果你使用的是C++而不是C,那么可以使用“引用”方式传递变量,效果与传递变量指针完全一致。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 00:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表