嵌入式笔试刷题专栏(第二天)
11.请你定义如下几种函数,函数没有形参,但是有返回值类型,返回值类型(只要类型符合要求就行)要求如下
返回函数指针
int (*func1(void))(void);
返回指针数组
int *(*func2(void))[3];
返回数组指针
int (*func3(void))[5];
返回函数数组指针
int (*(*func4(void))[2])(int);
11. 定义函数:
- 返回函数指针的函数:
- 返回指针数组的函数:
- 返回数组指针的函数:
- 返回函数数组指针的函数:
12.const char *a;
const *char a;
char *const a; 有什么不同
12. const 用法区别:
const char *a;
:指向常量字符,不能通过a
修改内容。const *char a;
:语法错误。char *const a;
:常量指针,指针本身不能修改,内容可以改。
13.#define CALC(x,y) x*y+x
int main()
{
int a=CALC(2*3,3+2);
printf(“result=%d\n”,a);
return 0;
}
13. 宏展开结果:
#define CALC(x,y) x*y+x int a = CALC(2*3, 3+2); // 实际变为 2*3*3+2 = 18 + 2 = 20
输出:result=20
14分析如下写法的含义
第一题: void *(*(p)(int))[10];
函数名:p是函数名字
函数的形参: int
函数的返回值:void *[10] 返回的是一个指针数组
第二题: float (*(*p)(int,int,float))(int);
p是函数指针的名字
p指向的函数指针,参数是int,int,float
p指向的函数指针, 返回值类型是float (int),返回值也是个函数指针
第三题:typedef double (*(*(*p)())[10])();
p是函数指针的名字
p指向的函数指针,参数是空的
p指向的函数指针,返回值是double *[10]() 返回值是函数指针数组
第四题:int (*(*p())[10])();
函数名:p
函数的形参:空的
函数的返回值:int *[10]() 返回值是函数指针数组
14. 复杂声明分析:
- 第一题:p 是函数,参数为 int,返回 void * 指针数组。
- 第二题:p 是函数指针,返回值是函数指针,参数为 int,返回 float。
- 第三题:p 是函数指针,返回指向包含10个 double() 函数指针的数组。
- 第四题:p 是
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。