C语言-语法陷阱(一)理解函数声明

本文探讨了C语言中的函数声明,强调在使用函数前需要声明,并介绍了指针的基本概念,包括指向变量和函数的指针。讨论了如何通过强制类型转换调用函数指针,并提出设计一个程序,使硬件在启动时调用首地址为0的子例程,引发对函数指针强制转换和安全性的思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

理解函数声明

设计内容

设计一个程序,当计算机启动的时候,硬件将调用首地址为0位置的子例程。
经过思考,获得

(*(void(*) ())0) ();

先暂不看下列内容,思考一下,这个语句,到底实现了什么功能?

预备知识

变量与函数的声明

C语言中,有以下的特点(规则)。

  • 任何一个变量在使用前均需要声明。
int i = 0;          //声明一个有符号整形变量 i ,并赋初始值为0
u8 buf[64];         //声明一个无符号8bit的数组 buf,长度为64,这种经常使用在单片机开发中
  • 任何一个函数,在使用的时候,均需要对其进行声明。
void fun1(void);    //声明一个函数fun1,没有输入的参数,没有返回的参数
u8 fun2(u8 para1);  //声明一个函数fun2,输入参数为u8 para1,返回参数类型为u8

C语言也可以用指针来指向一个变量或者一个函数。

  • 指向变量的指针
//ptr为指向整形变量的指针
int i = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值