结构体的构造,赋值,函数参数引用
一、
#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;//将st的地址赋给struct Student * 型指针p
pst->sid = 99;//pst->sid等价于(*pst).sid,(*pst).sid等价于st.sid //常用第二种方法
//pst所指向的结构体变量中的sid这个成员
return 0;
}
/*
注意事项
结构体变量不能加减乘除,但可以相互赋值
普通结构体变量和结构体指针变量作为函数参数的问题
*/
二、
#include<stdio.h>
#include<string.h>
void f(struct Student * pst);
void g(struct Student st);
void g2(struct Student * pst);
struct Student
{
int sid;
char name[200];
int age;
};
int main()
{
struct Student st;
f(&st);//输入
// printf("%d %s %d\n",st.sid,st.name,st.age);
g(st);//输出,不用改变st
g2(&st);
return 0;
}
void f(struct Student * pst)
{
(*pst).sid = 99;
strcpy(pst->name,"zhangsan");
pst->age = 22;
}
//以下这种方法耗内存 耗时间 不推荐
void g(struct Student st)
{
printf("g:%d %s %d\n",st.sid,st.name,st.age);
}
void g2(struct Student * pst)
{
printf("g2:%d %s %d\n",pst->sid,(*pst).name,pst->age);
}