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

c语言函数结构体

作者:小编 更新时间:2023-09-22 18:48:35 浏览量:88人看过

c语言结构体是什么?

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.

结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问.

结构体作用:

结构体和其他类型基础数据类型一样,例如int类型、char类型,只不过结构体可以做成你想要的数据类型.以方便日后的使用.

在实际项目中,结构体是大量存在的.研发人员常使用结构体来封装一些属性来组成新的类型.由于C语言内部程序比较简单,研发人员通常使用结构体创造新的"属性",其目的是简化运算.

结构体在函数中的作用不是简便,其最主要的作用就是封装.封装的好处就是可以再次利用.让使用者不必关心这个是什么,只要根据定义使用就可以了.

c语言函数能不能返回结构体

c语言函数可以返回结构体,操作方法如下:

①.、首先在电脑中打开visual studio新建项目,给这个结构体取个名字叫student.

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

C语言中结构体和函数有着本质上的不同.

结构体是用户自己定义的一中数据类型,比如说你想要把学生信息作为一个整体存放在一个数据类型中,可以定义结构体,其中某个成员存放学号,某个存放姓名等等.

但是函数就完全不同了,函数是为了实现某种功能,比如你要在一堆学生中寻找某一个学生可以用函数来实现.

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

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

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

编辑推荐

热门文章