c语言结构体函数图解 c函数的结构

C语言结构体,求大佬指点

void inputarr(STUDENT s[ ], int n) {

成都创新互联公司主要从事网站制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务大冶,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

int i;

for(i = 0; i n; ++i) {

printf("输入第%d个学生的信息:\n",i + 1);

printf("学号:");

scanf("%d",s[i].num);

printf("姓名:");

scanf("%s",s[i].name);

printf("性别:");

scanf("%s",s[i].sex);

printf("成绩:");

scanf("%f",s[i].score);

printf("出生日期: xxxx:xx:xx :");

scanf("%d:%d:%d",s[i].birthday.year,s[i].birthday.month,s[i].birthday.day);

}

}

void outputarr(STUDENT s[ ], int n) {

int i;

for(i = 0; i n; ++i) {

printf("%d %s %s [%04d:%02d:%02d] %.2lf\n",s[i].num,s[i].name,s[i].sex);

printf("[%04d:%02d:%02d] %.2lf\n",s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].score);

}

printf("\n");

}

C语言结构体函数

STU  f (STU  a)

{  STU  b={"Zhao", 'm', 85, 90};

int  i;

strcpy( a.name, b.name );

a.sex = b.sex;

for ( i=0; i2; i++ )  a.score[i] = b.score[i];

以上是将b中的数据赋值给a,相当于a=b;这样的一个操作

return  a; 

}

main()

{  STU  c= { "Qian", 'f', 95, 92 }, d;

d = f(c);//这里传的c是个复制品(传递的不是结构体指针),所以c不会变,d接收f()函数的返回值,因为返回值的内容是f()中的b的值,所以,d与c不同

printf ("%s,%c,%d,%d, ", d.name, d.sex, d.score[0], d.score[1]);

printf ("%s,%c,%d,%d\n", c.name, c.sex, c.score[0], c.score[1]);

}

输出结果为:A)  Zhao,m,85,90, Qian,f,95,92

关于C语言结构体函数传递的问题。图中,函数sub1与sub2的形参一个是x一

sub1是传值调用,所以在sub1中对参数的修改,不影响实参a,

打印实参a的值还是初始化值。

sub2传递数组,本质上为传指针,所以在sub2中对参数修改,同步影响实参b。

所以打印b是修改后的值。

C语言结构体函数问题

第一题中的name为什么是sundan

第一题中的num为什么该值:()

注意了,压根没有使用f的返回值,f也没有返回值(void)

第二题(不再画图了),main中的s[0]与f中的p压根是两个内存区域(当然了,传参数时,将s[0]内存区域的内容拷贝到了p内存区域),所以显然,在f中修改内存区域p,自然不会影响main中的内存区域s[0],因此s[0]亦然保持本来的值。(即20041, 703)


分享标题:c语言结构体函数图解 c函数的结构
本文路径:http://scyanting.com/article/dooghop.html