重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#define uchar unsigned char
创新互联建站一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供网站建设、网站制作、成都网页设计、微信小程序、成都网站开发、成都网站制作、成都软件开发、成都app软件开发是成都本地专业的网站建设和网站设计公司,等你一起来见证!
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)();
}
不可以的,结构体一般都只有数据成员,而没有函数成员。也就是像int、double这样的数据类型,函数需要单独定义。如果必需使用函数,就得用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语言的结构体是一组数据的组合,并不是简单的单一类型。所以在查找和输出的时候,均不能直接操作,而是要进行变通。
1
查找。
对于以某一项为关键字进行查找时,比如在结构体中有int型的成员a,要查找a为100的结构体变量,这时需要遍历每个结构体(数组、链表、或者其它任意形式),对每个元素的成员a值进行比较,符合的则表示查找成功。
对于结构体中元素较多,同时要对整个结构体每个元素都匹配才算查找到的特殊情况,可以使用memcmp的方式,整体进行比较,以减少代码量。不过这种情况较为少见,不过多描述。
2
输出。
对于结构体的输出,其实就是对其每一项,或者若干项成员变量的输出。
所以可以使用基本的输出函数,对每一项单独输出,输出中为了方便阅读,可以加一些说明文字。
如果对结构体输出有多处调用的需求,可以在将该功能封装为函数,供各个需要的函数调用。这样的好处是,当结构体的成员出现变化,或者结构体输出要求更改时,修改一处代码即可完成所有的输出修改,实现易于维护的效果。