您现在的位置: 主页 > 嵌入式人才市场 > 企业招聘信息 > 单片机学习之从华为招聘笔试题看C语言指针
本文所属标签:
#华为招聘#   #C语言指针#   
为本文创立个标签吧:

单片机学习之从华为招聘笔试题看C语言指针

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-18 

与其悲叹自己的命运,不如相信自己的力量。(蒙古谚语)


单片机学习之从华为招聘笔试题看C语言指针

C语言指针是C语言最精华的部分,也是最难掌握的部分,也是通常面试题必考的题目。掌握了C语言指针,才算是真正掌握了C语言。

单片机学习之从华为招聘笔试题看C语言指针

2005年华为招聘--C语言笔试试题

我们从实际的面试题入手,一方面可以学习C语言指针方面的知识,另外一方面也可以了解公司招聘所侧重的知识点。非指针的问题,略过,只给出答案

一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)

1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。(T)

答案:正确

2、int (*ptr) (),则ptr是一维数组的名字。(F)

答案:这个是错误的,正确的说法是函数指针。

分析:什么是函数指针呢?

函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数。比如,linux系统或者freeRTOS常用到回调函数,通常都是以函数指针的形式传递的。

3、指针在任何情况下都可进行>,<,>=,<=,==运算。(F)

答案:说法是错误的,只有在两个同类型的指针比较运算才有意义。

分析:两个同类型的指针,或者一个指针和一个地址量可以进行比较(包括>、<、>=、<=、==和!=),比较的结果可以反映出两个指针所指向的目标的存储位置之间的前后关系,或者反映出一个指针所指向的目标的存储位置与另一个地址之间的前后关系。

例如,假定指针p和q都是指向同一数组的成员,那么关系表达式:p<q

表示:如果p所指向的数组元素在q所指向的数组元素之前,其值为1;否则,为0。

不同类型指针之间或指针与一般的整型数据之间的比较是没有实际意义的。但是指针与零之间进行等于或不等于的比较,即

p==0 或 p!=0(0也可以写成\0''或NULL)

常用来判断指针p是否为一空指针(即未指向任何目标)

4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。(F)

答案:错误。只能针对基本数据类型使用switch,这些类型包括int、char、枚举、bool等。对于其他类型,则必须使用if语句。

5、#define print(x) printf("the no, "#x",is ")(T)

答案:正确。

解释如下:在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。

二、填空题(共30分)

1、在windows下,写出运行结果,每空2分,共10分。

char str[ ]= "Hello";

char *p=str;

int n=10;

sizeof(str)=(6)

sizeof(p)=(4)

sizeof(n)=(4)

void func(char str[100])

{}

sizeof(str)=(4)

2、void setmemory(char **p, int num)

{ *p=(char *) malloc(num);}

void test(void)

{char *str=NULL;

getmemory(&str,100);

strcpy(str,"hello");

printf(str);

}

运行test函数有什么结果?()10分

答案:hello

分析一下这个题:

void setmemory(char **p, int num)

{

*p=(char *) malloc(num);

}

这个函数参数是传递了一个二级指针过来,但是在*p=(char *) malloc(num);进行了一次取址运算。

可以做一个等效简化,如下:

void setmemory(char *p, int num)

{

p=(char *) malloc(num);

}

这样看起来会更顺眼一点,但是相应的getmemory(&str,100);,也要做变化getmemory(str,100);,变化前后的效果是一样的。这个题的重点其实是考察二级指针问题,化繁为简,这个指针问题其实不难。

总结:指针的本质是变量,和char、int、short、long其实都是一个意思,只不过由于所指向的类型不同,变化比较多,这也是指针灵活的地方。重要的事情说三遍,指针是一个变量,把指针作为一个变量来看,理解会更简单。

C语言指针,你理解了吗,欢迎留言讨论。

单片机学习之从华为招聘笔试题看C语言指针



              查看评论 回复

游客   2018-08-15 16:06:20
是牛不是牛,拉出来溜溜就知道了
1楼 回复本楼
游客   2018-08-12 07:30:29
也许他真的比华为牛,比如在某方面 //回复:@游客: 华为不牛,就你牛 //回复:@游客: 你以为华为每个人都那么牛逼吗
2楼 回复本楼
游客   2018-08-07 22:47:02
华为不牛,就你牛 //回复:@游客: 你以为华为每个人都那么牛逼吗
3楼 回复本楼
游客   2018-08-07 13:36:11
你以为华为每个人都那么牛逼吗
4楼 回复本楼
游客   2018-08-06 10:57:39
你以为华为招聘只是搞个 c语言吗
5楼 回复本楼
匿名   2018-08-03 14:41:35
真的是华为的招聘题吗,看来我可以进华为了
6楼 回复本楼


嵌入式交流网主页 > 嵌入式人才市场 > 企业招聘信息 > 单片机学习之从华为招聘笔试题看C语言指针
 函数 变量 指针

"单片机学习之从华为招聘笔试题看C语言指针"的相关文章

网站地图

围观()