野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17947|回复: 5

C语言面试笔记(二)

[复制链接]
发表于 2016-9-8 09:04:40 | 显示全部楼层 |阅读模式
14.volatile
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
(1)  并行设备的硬件寄存器(如:状态寄存器
(2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
(3) 多线程应用中被几个任务共享的变量

15.数组和链表的区别
数组:数据顺序存储,固定大小(插入需要移动很多值)
链表:数据可以随机存储,大小可动态改变(访问需要遍历)

16.在嵌入式开发中,为什么能通过C语言去直接操作硬件:
因为有指针,指针是c语言的灵魂,它可以直接访问内存

17.链表的作用
用于内存管理,链表节点中的指针域可以将不连续的内存彼此关联起来,从而实现内存的动态管理。

18.什么变量不能用指针指向?
寄存器变量(register修饰),因为这个变量会优先存放到CPU寄存器中,而指针只能指向内存的任务区域,但不能指向寄存器。

19.头文件中ifndef/define/endif的作用:防止头文件被重复引用

20.#include<filename.h>和#include“filename.h”的区别:
<filename.h>告诉预处理器在标准系统目录下寻找文件;
“filename.h”告诉预处理器在当前目录中寻找文件,找不到则在标准目录下寻找文件。

21.const有什么用途:
(1) 定义const常量
(2)const可以修饰函数的参数、返回值、甚至函数的定义体,被const修饰的东西都受到强制保护,可以预防意外的变动。
//指向长整型的指针变量
const char *p1 = name;//指针所指向的内容不能变,指针指向的地址可变
//指向整形数的长指针
char *const p2 = name;//地址不可变,内容可变
//指向常量的长指针
const char *const name = “chen”;//地址不变,内容不变

22.内存的分配:
(1)栈区(stack)--由编译器自动分配释放,存放函数的参数值,局部变量等。其操作方式类似于数据结构中的栈。
(2)堆区(heap)--一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式类似于链表
(3)全局区(静态区)(static)--全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一起区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放
(4)文字常量区--常量字符串就是放在这里,程序结束后由系统释放
(5)程序代码区--存放函数体的二进制代码

23.sizeof和 strlen()的区别
(1)sizeof是运算符,计算数据所占的内存空间,strlen()是一个函数,计算字符数组的字符数。
(2)sizeof可以用类型作参数;strlen()只能用char*作参数,必须是以‘\0’结束。
(3)数组作sizeof参数不退化,传递给strlen就退化为指针了
(4)sizeof操作符的结果类型是size_t,它在头文件typedef为unsigned int类型,该类型保证能容纳实现建立的最大对象的字节大小。

24. 头文件的作用是什么:(1)通过头文件来调用库功能(2)头文件能加强类型安全检查

25. 简述数组和指针的区别:数组要么在静态存储区被创建(全局数组),要么在栈上被创建,指针可以随时指向任意类型的内存块。

26. 变量的定义和声明的区别:声明变量不分配空间,定义变量分配空间。声明告诉编译器后面的引用都按声明的格式。定义其实包含了声明的意思,同时要分配内存空间。

27. 简述什么是值传递,什么是地址传递
值传递主调函数传递给被调函数的是值拷贝,不是原值;地址传递主调函数传递给被调函数的值的地址。区别是值传递被调函数中的操作不改变主调函数的值,而地址传递则不同。

28.结构体和共用体的区别:
(1)结构体和共用体都是由多个不同数据类型成员组成,但在任何同一时刻,共用体只存放了一个被选中的成员(所有成员共用一块地址空间),而结构体的所有成员都存在(不同成员的存放地址不同)
(2)对于共用体的不同成员赋值,将会对其他成员重写,原来的值就不存在了,而结构体的不同成员赋值是互不影响的。


回复

使用道具 举报

发表于 2016-9-8 10:09:53 | 显示全部楼层
楼主的资料整理得很全很细致
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-8 10:24:19 | 显示全部楼层
东门安芙 发表于 2016-9-8 10:09
楼主的资料整理得很全很细致

这就是普通的一些面试题,不过面试还是经常出现。学习还是要靠笔记的,不然不知道什么时候就忘记了,忘记了再回过头来翻翻笔记还是比较好的。
回复 支持 反对

使用道具 举报

发表于 2016-9-10 15:55:13 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-10 20:15:03 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2016-9-11 13:40:28 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-15 03:28 , Processed in 0.039501 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表