网站首页 > 文章中心 > 其它

结构体与函数+c语言_c语言结构体里面放结构体

作者:小编 更新时间:2023-08-23 19:28:12 浏览量:439人看过

在c语言中 函数和结构体的区别

一个程序通常围绕这两个方面进行:数据存储和数据操作;

结构体是一种数据类型,用来将不同类型的数据组合在一起,决定数据的存储问题(比如在内存占多大的空间来,系统怎么解释存储数据的位数据啦等等)同int, double 等编译器内置的数据类型基本相同,只不过结构体是用户自己定义的数据类型而已,例如:

struct student

int NO;

};

函数是对数据的一种操作;

c语言结构体与函数结合使用

#includestdio.h

struct test

{

int kaohao;

char name[10];

int age;

float chengji;

int i=0;

float max=0;

struct test maxs;

if(k[i].chengjimax)

max=k[i].chengji;

maxs=k[i];

}

printf("最高成绩的人是:%s\n成绩为%f\n",maxs.name,maxs.chengji);

int main()

//继续加油啊!

best(k);

return 0;

C语言——结构体/函数

#include?stdio.h

#include?string.h

struct?STUDENT

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);

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

return?0;

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

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)

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

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

如:typedef

struct

Teacher

TEACHER;

则可以用TEACHER

代替struct

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

追问:

那struct

*creat(struct

*head);

和Teacher

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

追答:

是一样的,struct

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

C语言结构体函数

STU?f?(STU?a)

int?i;

strcpy(?a.name,?b.name?);

a.sex?=?b.sex;

好了,全部的将b中的数据赋值给a,相当于a=b;这样的一个操作

return?a;?

main()

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]);

以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章