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

用户可以自定义结构体,是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[]来表示形参,这样就可以实现,用结构体成员变量来作为函数的形参。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值