c语言结构体里的函数 c语言结构体里的函数有哪些

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

#define uchar unsigned char

void (*current_operation_index)();

void fun0()

{

printf("hello world!\n");

}

typedef struct

{

uchar current;

uchar up;//上键

uchar down;//下键

uchar enter;//确认键

uchar back;//返回键

void (*current_operation)();

}key_table;

key_table table={0,0,0,1,0,(*fun0)};

void main()

{

current_operation_index=table.current_operation;

(*current_operation_index)();

}

c语言中,如何在结构体中实现函数的功能?

c语言的结构体是一组数据的组合,并不是简单的单一类型。所以在查找和输出的时候,均不能直接操作,而是要进行变通。

1

查找。

对于以某一项为关键字进行查找时,比如在结构体中有int型的成员a,要查找a为100的结构体变量,这时需要遍历每个结构体(数组、链表、或者其它任意形式),对每个元素的成员a值进行比较,符合的则表示查找成功。

对于结构体中元素较多,同时要对整个结构体每个元素都匹配才算查找到的特殊情况,可以使用memcmp的方式,整体进行比较,以减少代码量。不过这种情况较为少见,不过多描述。

2

输出。

对于结构体的输出,其实就是对其每一项,或者若干项成员变量的输出。

所以可以使用基本的输出函数,对每一项单独输出,输出中为了方便阅读,可以加一些说明文字。

如果对结构体输出有多处调用的需求,可以在将该功能封装为函数,供各个需要的函数调用。这样的好处是,当结构体的成员出现变化,或者结构体输出要求更改时,修改一处代码即可完成所有的输出修改,实现易于维护的效果。

C语言结构体类型函数

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


文章名称:c语言结构体里的函数 c语言结构体里的函数有哪些
标题URL:http://ybzwz.com/article/dooopoi.html