一个简单C语言的问题,帮忙解释一哈。

来源:百度知道 编辑:UC知道 时间:2024/05/18 06:06:41
#include<stdio.h>
typedef struct
{
int b,p;
}A;
void f(A c)
{int j;
c.b+=1;
c.p+=2;}
main()
{int i;
A a={1,2};
f(a);
printf("%d,%d\n",a.b,a.p);}
上面的这个程序的运行结果是1,2;
void f(A c)
{int j;
c.b+=1;
c.p+=2;}
这个函数表示什么意思?我咋从来没见过这种形式。
下面的main函数优势如何执行的?
各位大侠快帮忙解释一哈!!!

我懂你的意思,因为你那只是属于值传递,在上面定义的形参中只是把你实参的值复制过去了,你想结果为2,4可以这样改:
#include<stdio.h>
typedef struct
{
int b,p;
}A;
void f(A *c)
{int j;
c.b+=1;
c.p+=2;}
main()
{int i;
A a={1,2};
f(&a);
printf("%d,%d\n",a.b,a.p);}
一个是值传递一个是引用传递!

A是类型 像int一样,只不过A是自己定义的,int是系统给出的c是变量
A是结构体类型,他包含两个int类型b,p,分别为c.b和c.p

这函数闲的蛋疼啊。i,j是摆设吗?函数是值传递,因而改变不了结构体a的值。

这是定义一个函数,函数的功能是将结构体变量c中的成员b加1,p加2,在使用结构体成员时需要用"结构体变量名.成员名"。
mian函数中先定义了一个结构体变量a,a中的成员b=1,p=2,然后调用f()函数,但是这只是完成了一个值传递,所以b,p的值不会发生变化.
可以这样修改
void f(A *c)
{int j;
c.b+=1;
c.p+=2;}
main()
{int i;
A a={1,2};
f(&a);
这样答案就不是1,2,而是2,4