标签:变量 结构 string 不能 结构体 表示 无法 地址 两种
结构体
为什么会出现结构体
为了表示一些复杂的数据,而普通的基本类型的变量无法满足要求
什么叫结构体
结构体是用户根据自己的实际需要定义的复合数据类型
#include <stdio.h> #include <string.h> struct Student { int sid; char name[200]; int age; }; //分号不能省 int main() { struct Student st = {1000, "zhangyan", 20}; printf("%d %s %d\n",st.sid, st.name, st.age); st.sid = 99; //st.name = "lisi"; //error strcpy(st.name, "lisi"); st.age = 20; printf("%d %s %d\n",st.sid,st.name, st.age); return 0; }
如何使用结构体
两种方式:
struct Student st = {1000, "zhangyan", 20};
struct Student * pst = &st;
1. st.sid
2. pst -> sid pst所指向的结构体变量中的的sid这个成员(通常使用第二个)
注意事项:
结构体变量不能加减乘除,但可以相互赋值
普通结构体变量和结构体指针变量作为函数传参的问题
#include <stdio.h> #include <string.h> struct Student { int sid; char name[200]; int age; }; //分号不能省 void f(struct Student * pst); void g(struct Student st); void g2(struct Student * ); int main() { struct Student st; //已经为st分配好地址 f(&st); g2(&st); //printf("%d %s %d\n", st.sid, st.name, st.age); return 0; } //这种方式耗内存,耗时间,不推荐 void g(struct Student st) { printf("%d %s %d\n", st.sid, st.name, st.age); } void g2(struct Student *pst) { printf("%d %s %d\n", pst->sid, pst->name, pst->age); } void f(struct Student * pst) { (*pst).sid = 99; strcpy(pst->name, "zhangsan"); pst->age = 22; }
标签:变量 结构 string 不能 结构体 表示 无法 地址 两种
原文地址:https://www.cnblogs.com/spore/p/11070876.html