结构体
struct student { char name[10]; int callnum; }S;//也是结构体变量 struct student s;//创造结构体变量
初始化(赋值)
*s.name="hhhhh";//(大错特错)
*” a. b"a为结构体变量
”a->b"a为结构体指针变量
struct student s={"xiaomin",65432};//第一种 strcpy(s->name,"wangmingz");//#include<string.h>不能省略 s->callnum=12345;//指针赋值,,eg:struct student s s.callnum=12;//此时s为结构体变量,eg:struct student* s
传参
1.传结构体名(不能改变值)
#include<stdio.h> #include<string.h> struct student { char name[10]; int callnum; }; void func(struct student s) { strcpy(s.name,"wangmingz"); s.callnum=12345; printf("%s\n",&s.name); printf("%d\n",s.callnum); } int main() { struct student s={"wangmi",65432}; func(s); printf("%s\n",&s.name); printf("%d\n",s.callnum); return 0; }
2.传结构体指针(能改变初始值)
#include<stdio.h> #include<string.h> struct student { char name[10]; int callnum; }; void func(struct student* s) { strcpy(s->name,"wangmingz"); s->callnum=12345;//此时s为指针 } int main() { struct student s={"xiaomi",65432}; func(&s); s.callnum=12;//此时s为结构体变量 printf("%s\n",&s.name);//%s 对应的是地址 printf("%d\n",s.callnum); return 0; }