#include<stdio.h>
int main()
{
float *g();//()优先级大于*,此句含义为 g是一个函数,返回值为float*
float (*h)();//一个指向返回值为float类型的函数指针 h是一个函数指针,(*h)是一个函数,*h返回值为float
(*h)();//上一句是声明,这一句是调用
/**************************************************************
由函数声明,得到类型转换符 (float (*)()) 表示一个指向返回值为float类型的函数指针 的类型转换符
***************************************************************/
(*(void(*)())0)();//首地址为0位置的子例程 声明
/**************************************************************
分析:
(*fp)();//在ANSI C中,允许简写为fp(),但仅是简写!
(*0)();//编译错误,因为*必须要个指针做操作数。因此需要对0进行类型转换
void (*fp)()//fp为指向void类型的函数指针
(void(*)())0 对0进行类型转换,0类型变为 指向void类型的函数指针 首地址为0位置
(*(void(*)())0)(); void类型的函数声明 首地址为0位置 函数名为 *(void(*)())0
***************************************************************/
return 0;
}
c编程常见错误-奇葩的函数声明
最新推荐文章于 2024-08-06 09:41:55 发布