189 8069 5689

c语言进行结构体函数 c语言结构体在函数中使用

C语言结构体类型函数

void f(A c) /* 注意:c结构变量名 但这个c也是个复制品,与原实参只是一样的内容,却不是同一个!! */ 所以结果还是a={1,2}; 答案为B

创新互联云计算的互联网服务提供商,拥有超过13年的服务器租用、四川绵阳服务器托管、云服务器、网页空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、网页空间、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。

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语言的结构体函数

如果在结构体定义时,或定义后取了别名,可以用别名,否则不能省“struct”

如:typedef

struct

Teacher

TEACHER;

则可以用TEACHER

代替struct

Teacher

C语言的结构体没有存取控制权限,相当于C++存取控制权限中的public:

追问:

那struct

Teacher

*creat(struct

Teacher

*head);

和Teacher

*creat(struct

Teacher

*head);

一样吗?如果不一样的话有什么区别呢?

追答:

是一样的,struct

Teacher

和Teacher只是同一东西的两种不同写法。

C语言——结构体/函数

#include stdio.h

#include string.h

#define N (5)

struct STUDENT

{

char name[20];

int age;

float chinese,math;

};

void scan(struct STUDENT *a,int n);

void print(struct STUDENT *a,int n);

void sort(void *a,int n,int size,int (*cmp)(void *,void *));

int cmp_score(void *a,void *b);

int cmp_chinese(void *a,void *b);

int cmp_name(void *a,void *b);

int main()

{

struct STUDENT a[N];

int i;

scan(a,N);

sort(a,N,sizeof(*a),cmp_score);

print(a,N);

sort(a,N,sizeof(*a),cmp_chinese);

print(a,N);

sort(a,N,sizeof(*a),cmp_name);

print(a,N);

return 0;

}

void scan(struct STUDENT *a,int n)

{

int i;

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

{

scanf("\n%s %d %f %f",a[i].name,a[i].age,a[i].chinese,a[i].math);

}

}

void print(struct STUDENT *a,int n)

{

int i;

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

{

printf("%s %d %f %f\n",a[i].name,a[i].age,a[i].chinese,a[i].math);

}

}

void sort(void *a,int n,int size,int (*cmp)(void *,void *))

{

int i,j;

void *t=malloc(size);

for(i=0;in-1;++i)

{

for(j=0;jn-i-1;++j)

{

if(cmp(a+size*j,a+size*(j+1)))

{

memcpy(t,a+size*j,size);

memcpy(a+size*j,a+size*(j+1),size);

memcpy(a+size*(j+1),t,size);

}

}

}

free(t);

}

int cmp_score(void *a,void *b)

{

return ((struct STUDENT *)a)-chinese+((struct STUDENT *)a)-math((struct STUDENT *)b)-chinese+((struct STUDENT *)b)-math;

}

int cmp_chinese(void *a,void *b)

{

return ((struct STUDENT *)a)-chinese((struct STUDENT *)b)-chinese;

}

int cmp_name(void *a,void *b)

{

return strcmp(((struct STUDENT *)a)-name,((struct STUDENT *)b)-name)0;

}


分享文章:c语言进行结构体函数 c语言结构体在函数中使用
转载来于:http://cdxtjz.cn/article/hepood.html

其他资讯