嵌入式笔试刷题(第3天)
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 是函数,返回一个指向10个 int() 函数指针数组的指针。
15.写出以下程序执行结果
# include <stdio.h>
void main( )
{
char s1[]="Hello World!";
char s2[]="Hello World!";
if(s1==s2 )//比较两个指针中存放的地址是否相同
printf(“Equal!”);
else
printf(“Not equal!”);
}
15. 输出结果:
char s1[] = "Hello World!"; char s2[] = "Hello World!"; if (s1 == s2) printf("Equal!"); else printf("Not equal!");
输出:Not equal!
更多内容全在下方专栏
全网最受欢迎的嵌入式笔试专栏
笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学
3000+订阅还会涨价,提前订阅提前享受,持续更新中。
专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
#嵌入式笔面经分享##你的秋招第一场笔试是哪家##嵌入式#