#include <stdio.h> //struct Stu //{ // int a; // char c; // char arr[20]; // double d; //}; //struct D //{ // char ch[10]; // struct Stu s; // char* pc; //}; //int main() //{ // char arr[10] = "hello"; // struct D d = { "tian",{21,'a',"15582151648",3.14},arr }; // printf("%s\n", d.ch); // printf("%d\n", d.s.a); // printf("%c\n", d.s.c); // printf("%s\n", d.s.arr); // printf("%lf\n", d.s.d); // printf("%s\n", d.pc); // printf("%p\n", d.pc); //}
#include <stdio.h> typedef struct Stu { int age; char tele[20]; char name[20]; char sex[5]; }; void print(Stu tmp) { printf("age:%d\n", tmp.age); printf("tele:%s\n", tmp.tele); printf("name:%s\n", tmp.name); printf("sex:%s\n", tmp.sex); } void print1(Stu* ps) { printf("%d\n", ps->age); printf("%s\n", ps->tele); printf("%s\n", ps->name); printf("%s\n", ps->sex); } int main() { Stu s = { 21,"15582151648","雄","男" }; print(s); print1(&s); return 0; }
结构体传参,要传结构体的地址,函数传参是需要压栈的,如果传结构体,结构体过大,系统开销大。
结构体传参传地址,可以用p->成员变量打印出相关信息。
typedef给类型重新起个名字,放在结构体声明前相当于把结构体类型重命名。