结构体与函数+c语言,结构体c++语言

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

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

为来安等地区用户提供了全套网页设计制作服务,及来安网站建设行业解决方案。主营业务为成都网站建设、网站建设、来安网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

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

struct student

char name[20];

int NO;

};

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

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

我在VC6里面运行了一下主要有一下的错误

1,首先,汉字“男”这个是一个字符串,所以必须占三个字节也就是 char sex[3];才可以记住,字符串以‘\0’结尾哦!你没有算\0

2,就是你丢了好几个(逗号),自己找下

4,,再次你的struct test后的k[5]只能说是声明了一个变量,但是变量的初始化必须在main 内进行,但是又牵扯到了字符赋值的问题!这个可能你没太深入去学!额错误有点多,我给你改了下,你自己在仔细找找哪里有错误吧!

#includestdio.h

struct test

{

int kaohao;

char name[10];

char sex[3];

int age;

float chengji;

};

void best(test k[5])

{

int i=0;

float max=0;

struct test maxs;

for(;i5;i++)

if(k[i].chengjimax)

{

max=k[i].chengji;

maxs=k[i];

}

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

}

int main()

{

struct test k[5]={ //要是.c文件的话就必须注明声明变量!你之前的声明也可以声明

//k[5]变量但是不能在拿来初始化!总的来说你写的还挺不错的!

//继续加油啊!

{1101,"张三","男",19,68.5},

{1102,"李四","男",20,75},

{1103,"王五","女",18,80.5},

{1104,"孙六","女",18,90},

{1105,"周七","男",19,59}};

best(k);

return 0;

}

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

如果在结构体定义时,或定义后取了别名,可以用别名,否则不能省“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语言结构体函数

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语言,结构体c++语言
地址分享:http://azwzsj.com/article/hedpii.html