您的位置:首页 > 编程语言 > C语言/C++

c语言结构体成员作为函数参数

2017-01-19 12:54 162 查看
用户可以自定义结构体,是C语言的可以更方便的解决各种类型的问题。我们知道结构体变量可以作为函数参数,那结构体内部的成员变量可以作为函数参数么?

#include<stdio.h>
#include<string.h>
struct Worker{

char name[10];
char num[8];
};
void Sort(struct Worker wk[]){				//排序函数

struct Worker temp;
for(int i=0;i<5;i++){
int k = i;
for(int j=i+1;j<5;j++){
if(wk[j].num>wk[k].num){
k = j;
}//end if
temp = wk[k];
wk[k] = wk[i];
wk[i] = temp;
}//end for

}//end for
for(int t=0;t<5;t++){

printf("%s %s\n",wk[t].name,wk[t].num);
}
}
void Select(struct Worker wk[],char n[8]){
int low = 0,high = 7;
int mid;
while(low<high){
mid = (low+high)/2;
if(wk[mid].num == n) printf("%s\n",wk[mid].name);
else if(wk[mid].num>n) low = mid + 1;
else if(wk[mid].num<n) high = mid - 1;
}//end while
}

void main(){
struct Worker wk[5];
printf("Please enter name and number\n");
for(int i=0;i<5;i++){
gets(wk[i].name);
gets(wk[i].num);
}//end for
printf("----------------------------------------\n");
for(int j=0;j<5;j++){
puts(wk[j].name);
puts(wk[j].num);
}//end for
printf("----------------------------------------\n");
printf("The order is\n");
Sort(wk);
printf("----------------------------------------\n");
printf("Please enter the number\n");
struct Worker temp;
gets(temp.num);
puts(temp.num);
Select(wk,temp.num);

}

上述代码定义了结构体Worker里面有两个字符串,为了实现按num[]将结构体变量排序,就需要对wk[].num进行排序。这里采用折半查找函数的方法来实现。
通过结构体定义我们知道 wk[].num 是一个字符数组,因此在函数形参列表中 用char n[]来表示形参,这样就可以实现,用结构体成员变量来作为函数的形参。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: