一、函数指针
顾名思义:指向函数的指针
int (*p)(int,int);
p=&max;
补充:c标准规定,函数名也表示函数的入口地址,数组名也表示数组的首地址
TRUE: printf("%d" , (*P)(20,10));
printf("%d" , P(20,10));
FALSE: printf("%d", *p(20,10));
补充:arr和&arr的数值相同,但含义不同
arr : 数组名可表示数组的首地址,+1+的是数组单个字节数的大小
&arr : 表示取数组的地址,+1+的是整个数组的字节大小
同理可得:
(1)指针函数:指针的函数
int* fun(int,int);
(2) 数组指针:指向数组的指针
int (*p)[ ];
(3) 指针数组:指针的数组
int *p[ ];
二、结构体的大小
1、结构体内存分配的本质原因:
让所有成员放在其能被其整除的地址上
2、规则:
(1)上面的加起来必须是下面的倍数
(2)总大小必须是单个最大成员的倍数(这里单个最大成员不包括结构体内的结构体)