请求各位鱼油帮忙看一下
本帖最后由 康小泡 于 2018-12-14 11:29 编辑#include<stdio.h>
#include<string.h>
StructStudent
{
intsid;
charname;
Intage;
};
intmain()
{
structStudentst={1000,“zhangsan”,20};
st.sid=99; //第一种方式; 一般不用;
structStudent*pst;//第二种方式;
pst=&st;
pst->sid=99; //pst->sid等价于(*pst).sid,而(*pst).sid等价于st.sid,
所以pst->si等价于st.sid;
return0;
}
为什么这一种赋值方式不推荐呢? 这得看情况呀;都会用得着。
第1种事先得分配足够的内存空间,声明的时候就分配好了。
第2种指针的方式更灵活些;可以需要的时候分配内存空间。如果你经常扩充,删除等等当然用第2种好 你现在写的是一个非常简单的例子,本地定义本地使用,两种方式没有任何区别。
如果结构体占用空间较大,在其他的函数中使用时,传递大的结构体会造成函数调用开销加大(需要将结构体全部压入栈中),同时如果在函数内部对传入的结构体进行修改,函数返回时,调用者空间内的变量值并未改变,得不到应有效果。
如果你使用的是C++而不是C,那么可以使用“引用”方式传递变量,效果与传递变量指针完全一致。
页:
[1]