c语言结构体做函数的问题,c语言结构体简单例题

C语言中,用结构体作函数参数的问题?

可以的,这样写:

在永仁等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、成都做网站 网站设计制作按需网站策划,公司网站建设,企业网站建设,品牌网站建设,全网整合营销推广,成都外贸网站制作,永仁网站建设费用合理。

test((RGBColor){0x0, 0x1, 0x2});

这个意思是把{0x0, 0x1, 0x2}强制转化为RGBColor类型。从语法语义上面是没问题的,在GCC编译没问题。

但是51上面没实验,按C标准能说得通,你可以试一试。

有关C语言中结构体变量做函数参数的问题

其实,结构名就是一个变量,由于你的形参和你的实参取名是一样的。而且对于形参肯定会变

实参不会变。所以,你中间的maxA变量,其实是子函数的形参变了。但是你的实参没变

因此结果没变

改,对于子函数中,你在void Max_Element_Find(struct Max_Element* maxA,double *A,int n)

Max_Element_Find(maxA,A,n);这样就好了

c语言中结构体变量做函数参数的问题

你有几处错误,以下是修改后的代码

#includestdio.h

#define M 3

struct date

{

int num;

char name[10];

char sex;

int age;

float score[5];

}student[M];

void f(struct date student[]);

void main()

{

int i,j;

printf("请按顺序输入学生数据\n");

for(i=0;iM;i++)

{

printf("姓名:");

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

printf("学号:");

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

printf("性别:");

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

printf("年龄:");

scanf("%d",student[i].age);

printf("语文成绩:");

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

printf("数学成绩:");

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

printf("英语成绩:");

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

if(i!=2)

printf("请输入下一个学生的数据\n");

}

/*for(i=0;iM;i++)*/

f(student);

for(i=0;iM;i++)

printf("第%d位同学的总分为%f,平均分为%f\n",i+1,student[i].score[3],student[i].score);

}

void f(struct date student[])

{

int i,j;

for(i=0;iM;i++)

{

for(j=0;j3;j++)

{

student[i].score[3]+=student[i].score[j];

student[i].score[4]=student[i].score[3]/3;

}

}

}

C语言中结构体数组名作为函数参数的问题

函数定义和声明的参数应该是: int oid_check(struct snmp_seq sp, struct rmc1207 * ramp, int BUFFER_SIZE);

函数调用: flag=oid_check(sp, ramp, BUFFER_SIZE);

-------------------------------------------------------------------------------

在这里, ramp 是结构体数组的指针

C语言 结构体变量作为函数参数的问题

gettimediff 参数类型不对,应该是 LPSYSTEMTIME ,而不是 SYSTEMTIME。其它地方也相应的改一改就行了。

C语言,结构体和函数的问题。

#includestdio.h

struct math

{

float real;

float image;

};

void main()

{

struct math s1,s2,z;

printf("x的实部值和虚部值:");

scanf("%f %f",s1.real,s1.image);

printf("y的实部值和虚部值:");

scanf("%f %f",s2.real,s2.image);

z=add(s1,s2);

printf("相加的结果:z=%f+%fi\n",z.real,z.image);

}

struct math add(struct math s1,struct math s2)

{

struct math z;

z.real=s1.real+s2.real;

z.image=s1.image+s2.image;

return z;

}

回答的人还挺多,居然没楼上的手快,看来我只有增加内容了!

说明:

局部函数需要一个返回值,给z。

这道题可以有三种解决方法

一、用指针,让局部函数返回值用指针传递,这样局部函数可以写void add...

二、把z定义成全局变量(就是在main函数外面定义z),然后局部函数里边不要重新定义z,这样可以把局部函数运算中的值保存下来。局部函数也可以写void add...

三、用返回值,就是局部函数不要写成void add...,让他带个返回值,返回给一个数,就是上面的程序就ok了

回答

追问struct math add(struct math s1,struct math s2) 这里为什么要定义成结构体?

{

struct math z;

z.real=s1.real+s2.real;

z.image=s1.image+s2.image;

return z;

}

因为返回值是结构体


网站栏目:c语言结构体做函数的问题,c语言结构体简单例题
浏览地址:http://pwwzsj.com/article/dsegohj.html