void func(struct stu t) { t.num=132456} /* 如果main里定义了stu d,那么func(d)只是将d的副本传进func函数,也就是把d复制了一份传进去,所以修改不到main里的d
1.传结构体名(不能改变值)
#include<stdio.h>
#include<string.h>
struct student {
char name[10];
int callnum;
};
void func(struct student s)//此时的s是原来s(即main里的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 对应的是地址,在这里不用&也可以,因为name是数组名,为地址
printf("%d\n",s.callnum);
return 0;
}