1.结构体数组声明_结构体数组内部出现方括号是什么:

1.结构体数组声明_结构体数组内部出现方括号是什么:

示例代码:

#include"stdio.h"

#include"stdint.h"

typedef void (*hanshuzhizhen) (void);

struct jiegouti//这是个结构体

{

int8_t paraone;//第一个参数

uint8_t paratwo;//第二个参数

uint16_t parathree;//第三个参数

hanshuzhizhen func;//函数指针、结构体内部函数

};

void jiegoutineibuhanshu(void)

{

printf("结构体内部函数被调用了/n");

}

const struct jiegouti jiegoutishuzu[2]=//这个就是结构体数组,最多里面两个结构体

{

[1] ={

1,

2,

3,

(hanshuzhizhen)jiegoutineibuhanshu

},

};

int main()

{

uint8_t paraone;

uint16_t paratwo;

paraone = jiegoutishuzu[1].paraone;

paratwo = jiegoutishuzu[1].paratwo;

printf("paraone = %d\n,paratwo = %d\n",paraone,paratwo);

jiegoutishuzu[1].func();

}

1.结构体数组声明_结构体数组内部出现方括号是什么:

这里的结构体叫做jiegouti,里面含3个元素,paraone,paratwo,parathree,结构体数组就是一个数组,每一个数组元素都是一个结构体,每一个数组元素里面都有三个结构体元素,我们这里的结构体数组叫jiegoutishuzu,里面有2个结构体,分别是jiegoutishuzu[0]、jiegoutishuzu[1],我们初始化jiegoutishuzu[1]的结构体元素是1 2 3 。

这里的[1]就是说jiegoutishuzu[1]赋值,如果没有这个[1]那就是按照[0],[1]的顺序初始化赋值。

struct jiegouti//这是个结构体

{

int8_t paraone;//第一个参数

uint8_t paratwo;//第二个参数

uint16_t parathree;//第三个参数

};

const struct jiegouti jiegoutishuzu[2]=//这个就是结构体数组,最多里面两个结构体

{

[1] ={

1,

2,

3,

},

};

2.函数指针声明

函数指针就是指向函数的指针,函数名就是函数指针,声明一个函数指针之后,就可以让他指向一些同类函数:

这里的jiegouti里面增加了一个类型是hanshuzhizhen类型的函数指针,这类函数指针,专门指向输入输出都是void的函数,这里指向的函数名叫func:

typedef void (*hanshuzhizhen) (void);

hanshuzhizhen func;

这种声明就相当于 void func(void):

在实例化结构体的时候,或者说给结构体数组元素结构体赋初值的时候,就需要在相应位置放一个输入输出都是void的函数:

(hanshuzhizhen)jiegoutineibuhanshu

这个函数就是结构体内部数组——jiegoutineibushuzu,功能就是输出一个调用成功声明。

typedef void (*hanshuzhizhen) (void);

struct jiegouti//这是个结构体

{

int8_t paraone;//第一个参数

uint8_t paratwo;//第二个参数

uint16_t parathree;//第三个参数

hanshuzhizhen func;//函数指针、结构体内部函数

};

void jiegoutineibuhanshu(void)

{

printf("结构体内部函数被调用了/n");

}

const struct jiegouti jiegoutishuzu[2]=//这个就是结构体数组,最多里面两个结构体

{

[1] ={

1,

2,

3,

(hanshuzhizhen)jiegoutineibuhanshu

},

};

3.示例代码显示结果

如果在结构体数组实例化中去掉[1],main中调用就会溢出(仅对于函数),因为实例化的相当于[0],1那部分内存没初始化(所以值是0):

相关文章

比利时在世界杯中的辉煌历史(探索比利时足球的崛起与进步)

365betmobileapp 07-04

还在一键清理手机垃圾?教你删除这些空文件夹,释放超大内存

365bet不能提现 07-02

小米账号

365betmobileapp 06-28

扬州方士一二级任务全集 内附方士入门流程

365betmobileapp 07-01