在c语言中,结构体与函数传递
如果是结构体成员传递到函数实参,则和变量传递相同
如果是结构体变量传递给函数实参,会在内存中开辟同样大小的内存空间,并且实参内容改变时,对应实参内容不会改变。
当结构体指针变量作为实参传递时,将指针地址传递给实参。
示例代码如下
#include<stdio.h>
#include<string.h>
struct test
{char name[30];int age;char sex;int student_number;} ;
void change_info(char name[30],struct test *q)
{printf("修改%s的信息\n",name);printf("修改为姓名 年龄 性别 学号:") ;scanf("%s %d %c %d",q->name,&(q->age),&(q->sex),&(q->student_number));
}int main()
{struct test lisi,*p=&lisi;strcpy(lisi.name,"lisi");change_info(lisi.name,p);printf("姓名:%s\t 年龄:%d\t 性别:%c\t 学号:%d\n",p->name,p->age,p->sex,p->student_number);return 0;
}
在上面代码中分别定义了一个结构体和一个函数
在main代码块里
定义了一个结构体变量 lisi,并且把lisi的地址赋值给指针p
接着
strcpy(lisi.name,"lisi")
把字符串lisi赋值给结构体成员name里
执行change_info函数,这里把lisi.name的值作为实参传递给函数
函数执行第一条代码
打印修改谁的信息
接着把lisi的地址传递给实参,传递给函数,分别修改结构体变量lisi里面成员的内容