嵌入式面试(笔试)笔记2

本文是对于下面链接的B站系列视频的学习笔记
语言笔试题,C++笔试题,嵌入式笔试题,面试题,难点疑点解析(持续更新)
在另外一篇文章的基础上增加或者强调一些对自己更重点的知识
另一篇文章的链接:
【常见c语言笔试题嵌入式软件开发2】

P28:仿照字符串库函数strcpy,自己编写一个字符串拷贝函数,不允许使用C库函数,要求两个参数,第一个参数是要拷贝的目的地址,第二个参数是拷贝字符串的来源。

#include <stdio.h>
char * mystrcpy(char *des,const  char*src)//加了const可以防止来源处值被改变
{char *temp = des;if(des == NULL ||src == NULL){return NULL ;}if(des == src){return des;}while(*des++ = *src++);//字符串结尾为"\0",ASCII码为NULL,所以不用加其他条件即可停止return temp;
}

第二种写法:

#include <stdio.h>
char * mystrcpy(char *des,const  char*src)
{int delta = des-src;if(des == NULL ||src == NULL){return NULL ;}if(des == src){return des;}while(*(src+delta) = *src++);//这样写可以省略寻址dest和dest++的操作,节省时间return dest;//不再需要temp来返回,直接返回dest即可
}

P31:请说明下面这段代码的运行结果

#include <stdio.h>
int main(void)
{unsigned char *p1;unsigned long *p2;p1 = (unsigned char *)0x801000;p2 = (unsigned long *)0x801000;printf("p1 + 5 = 0x%x\n",p1 + 5);printf("p2 + 5 = 0x%x\n",p2 + 5);return 0;
}
p1 + 5 = 0x801005
p2 + 5 = 0x801028

char类型的指针不代表只能表示8bit的地址,它可以表示所有的地址,只是它指向的那个地址里面存放的数据的数据类型是char

P32:下面的函数有什么错误:

int square(volatile int *pt)
{return (*pt)*(*pt);
}

编译器会对代码进行如下处理:

int square(volatile int *pt)
{int a,b;a = *pt;b = *pt;return (a)*(b);
}

此时a和b的值可能是不一样的

P34:指出下面代码的输出,并解释为什么?

#include <stdio.h>int main(void)
{int a[5] = {1,2,3,4,5};int *pt = (int *)(&a + 1);printf("%d %d\n",*(a+1),*(pt - 1));return 0;
}

a为a的第一个元素的地址,&a为把a作为整体的首地址,从取值上讲两者相等。
但是a+1为a的第二个元素的地址,而&a+1为在a的基础上再加一个a的大小,即加4*5=20,如果之后还有&a+2,则再加20.
此题中*(a+1)为2,*(pt - 1)为加了一个20之后减去4,即为a[5]的位置。

P39:阅读下面代码以下说法正确的是:

int main(void)
{char aChar;int aInt;aInt = aChar = -120;printf("%d\n",aInt);return 0;
}
A.一定输出-120
B.一定不能输出-120
C.可能输出-120

存疑
视频中说要考虑大端小端的问题,所以char赋值给int时可能会赋到高位导致结果不是-120,所以选C。
但是小数据类型给大数据类型赋值时不是会先进行符号位扩展吗,这种情况真的会发生吗?

P45:请问如下语句是什么意思:typedef int (*funcptr)();
定义了一个新的类型:funcptr,该类型为:一个无输入,返回值为int的函数指针
关于typedef与函数指针,可以参考这篇文章:typedef函数指针用法

P46:C和C++中const的区别
在C中,const虽然名称上是定义一个常量,但实际上并不是常量,他是可以用指针来修改的,而且我们不可以用const定义的变量来初始化数组维度。

const int n = 5;
int a[n];

在C中这是不可以的,但是在C++中,这是可以的。

P49:构造函数可以不通过类的对象来调用
C++的知识点,简单记录

P60:查看下面代码,看有无问题,如果有问题怎么修改

void GetMemory(char *p);
int main(void)
{char *str = NULL;GetMemory(str);strcpy(str, "Hello World");printf("%s\n",str);
}
GetMemory(char *p);
{p = (char*)malloc(100);
}

GetMemory的输入是指针,那么只是形参,是”按值传递”,在给p申请完地址离开函数GetMemory之后,str还是指向空。
所以GetMemory的输入应该是指针的地址,即指针的指针。
改正后代码:

void GetMemory(char **p);
int main(void)
{char *str = NULL;GetMemory(&str);strcpy(str, "Hello World");printf("%s\n",str);
}
GetMemory(char **p);
{*p = (char*)malloc(100);
}

嵌入式面试(笔试)笔记2相关推荐

  1. 嵌入式面试(笔试)笔记1

    嵌入式面试(笔试)笔记1 本文是对于下面链接的B站系列视频的学习笔记 语言笔试题,C++笔试题,嵌入式笔试题,面试题,难点疑点解析(持续更新) 在另外一篇文章的基础上增加或者强调一些对自己更重点的知识 ...

  2. 程序员面试笔试宝典学习笔记(一)

    以下是一些著名互联网企业的部分面试笔试真题以及考察知识点 本文的内容是对一些网址上的知识点介绍做了相应的整理 1.extern的作用 自己理解:应该需要区分extern在C语言中和C++语言中的作用, ...

  3. 【深度学习笔记】神经网络模型及经典算法知识点问答巩固(算法工程师面试笔试)

    文章目录 前言 一.前馈神经网络模型 1.请说说你对前馈神经网络中"前馈"二字的理解. 2.记忆和知识是存储在_____上的.我们通常是通过逐渐改变_____来学习新知识. 3.在 ...

  4. 我的新书——《PHP程序员面试笔试宝典》

    你好,是我琉忆. 一个文艺的PHP开发工程师. 很荣幸能够在这里带来我的第一本新书--<PHP程序员面试笔试宝典>. 一.创作过程 <PHP程序员面试笔试宝典>是我的第一本书, ...

  5. 嵌入式Linux驱动笔记(十六)------设备驱动模型(kobject、kset、ktype)

    ###你好!这里是风筝的博客, ###欢迎和我一起交流. 前几天去面试,被问到Linux设备驱动模型这个问题,没答好,回来后恶补知识,找了些资料,希望下次能答出个满意答案. Linux早期时候,一个驱 ...

  6. 【建议珍藏】校招社招面试指导笔记

    就我个人而言,由于四月初来到广州之后开始投递简历 还蛮顺利的,收到了第一家面试的offer,没有多对比几家就去了 对于加班情况,团队氛围这些都不是很了解,是十分不好的事情. 这阵子,我用了几天的时间从 ...

  7. 前端面试笔试错题指南(四)

    嗯,上次写blog已经是几周前的事情了,其实已经积攒了很多小问题需要记录和分享了.但是在8月底,VK我一次经历了了携程.拼多多.腾讯.网易等多轮面试轰炸,忙得不可开交,有喜有忧的同时,还是赶快记录了不 ...

  8. java面试笔试资料 百度网盘

    面试宝典:微软.谷歌.百度.腾讯等各大公司笔试面试题整理全版 /面试宝典:微软.谷歌.百度.腾讯等各大公司笔试面试题整理全版 分享时间:2014-11-07 09:01分享用户:东东***07文件大小 ...

  9. 【书】《数据库面试笔试宝典系列》简介

    [系列书]<数据库面试笔试宝典>相关内容 本文档说明 本文档主要是给数据库笔试面试系列书籍 < Oracle 数据库笔试面试宝典> . <数据库 程序员 面试笔试宝典&g ...

最新文章

  1. html链接伪类设置鼠标悬停,链接伪类可以控制超链接的样式吗?是怎样实现的?...
  2. 他曾创造多门编程语言,还被比尔·盖茨以300万美元挖角
  3. 【解决VMWare中新建虚拟机不支持centos64位的方法】
  4. python的优点-Python语言的优势有哪些?
  5. 第 171 章 vagrant - Tool for building and distributing virtualized development environments
  6. java获得网页的编码方式_求一段代码,可以获得编码格式是gb2312的网页的页面源码,java实现!...
  7. 表单和字都居中_APP 分享 | 6 款黑科技工具,低调收藏,每一款都很强大!
  8. 虽然现在用APACHE COMMONS DBCP可以非常方便的建立数据库连接池,
  9. pt-query-digest分析mysql日志
  10. 深度数据对接 链接服务器 数据传输
  11. 常用的做网站软件、网站制作软件分享
  12. Appium原理分析
  13. 如何离线加载全国2.48TB天地图
  14. 三极管做开关管的总结(理解三极管)
  15. 计算机被限制压缩包打不开怎么办,【解决】压缩文件打不开,压缩文件损坏怎么修复?...
  16. 2014matlab精度设置,matlab设置数据精度
  17. Python入门刷题第三天(类和对象和继承)
  18. 微信小程序实现单选、全选、反选、取消全选功能
  19. 解决时间差太大导致Windows无法同步时间
  20. 神经网络的持续终身学习综述论文

热门文章

  1. 示例填充图片_填充内容:工具,技巧和动态示例
  2. 料:泡好的大米15克
  3. 张先轶博士(OpenBLAS开源项目发起人,PerfXLab创始人)的采访录,中关村管委会千帆计划之“创见新面孔”专题采访活动
  4. 这篇文章教你用消除笔去水印
  5. 中国家庭收入调查(CHIP)数据88-13年
  6. npm install --save-dev
  7. VUE+ElementUI+SheetJS解析Excel
  8. 类似安卓的点9图片,气泡图片调成自己需要的
  9. 170817 WarGames-Natas(15)
  10. 【CF #797 Div3】A-E