c语言结构体成员作为函数参数
2017-01-19 12:54
162 查看
用户可以自定义结构体,是C语言的可以更方便的解决各种类型的问题。我们知道结构体变量可以作为函数参数,那结构体内部的成员变量可以作为函数参数么?
上述代码定义了结构体Worker里面有两个字符串,为了实现按num[]将结构体变量排序,就需要对wk[].num进行排序。这里采用折半查找函数的方法来实现。
通过结构体定义我们知道 wk[].num 是一个字符数组,因此在函数形参列表中 用char n[]来表示形参,这样就可以实现,用结构体成员变量来作为函数的形参。
#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[]来表示形参,这样就可以实现,用结构体成员变量来作为函数的形参。
相关文章推荐
- 将成员函数作为std::for_each的第三个参数
- linux多线程创建时使用类成员函数作为参数
- 指针类型作为成员函数的参数
- c++ 成员函数作为函数指针参数传入
- C++ 类成员函数作为参数
- linux多线程创建时使用类成员函数作为参数
- 指针类型作为成员函数的参数
- 将对象作为参数传递给成员函数
- 用指针类型作为成员函数的参数
- 类成员函数作为pthread_create函数参数
- 任意类成员函数作为线程参数的封装ex
- 6-2-b 指针类型作为成员函数的参数
- c++ 成员函数作为函数指针参数传入
- 6-2 程序填空(指针类型作为成员函数的参数)
- 类的成员函数指针作为参数传递给其他函数和普通函数指针的传递是不同的
- 类对象及类成员函数作为函数参数的方法
- 任意类成员函数作为线程参数的封装
- 成员函数指针作为参数传递给其他函数和普通函数指针的传递
- C++——将成员函数作为参数
- ******** 结构体的嵌套使用 结构体成员作为函数的参数 **********