1 / 69
文档名称:

c面试题.docx

格式:docx   大小:177KB   页数:69页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c面试题.docx

上传人:夜紫儿 2022/6/12 文件大小:177 KB

下载得到文件列表

c面试题.docx

文档介绍

文档介绍:根据熟悉的语言,谈谈两种语言的区别?
主要浅谈下 C/C++和 PHP 语言的区别:
PHP 弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web 应用开发,现在好多互联网开发公司的主流 web 后台开发语言,主要框问,
但不能被模块外其它函数访问。它是一个本地的全局变量。
在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是, 这个函数被限制在声明它的模块的本地范围内使用
类内的 static 成员变量属于整个类所拥有,不能在类内进行定义,只能在类的作用域内进行定义
类内的 static 成员函数属于整个类所拥有,不能包含 this 指针,只能调用 static
成员函数
static 全局变量与普通的全局变量有什么区别?static 局部变量和普通局部变量有什么区别?static 函数与普通函数有什么区别?
static 全局变量与普通的全局变量有什么区别:static 全局变量只初使化一次,防止在
其他文件单元中被引用;
static 局部变量和普通局部变量有什么区别:static 局部变量只被初始化一次,下一次
依据上一次结果值;
static 函数与普通函数有什么区别:static 函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
extern c 作用
告诉编译器该段代码以C 语言进行编译。
指针和引用的区别
引用是直接访问,指针是间接访问。
引用是变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间
引用绑定内存空间(必须赋初值),是一个变量别名不能更改绑定,可以改变对象的值。
总的来说:引用既具有指针的效率,又具有变量使用的方便性和直观性
关于静态内存分配和动态内存分配的区别及过程
静态内存分配是在编译时完成的,不占用 CPU 资源;动态分配内存运行时完成,分配与释放需要占用 CPU 资源;
静态内存分配是在栈上分配的,动态内存是堆上分配的;
动态内存分配需要指针或引用数据类型的支持,而静态内存分配不需要;
静态内存分配是按计划分配,在编译前确定内存块的大小,动态内存分配运行时按需分配。
静态分配内存是把内存的控制权交给了编译器,动态内存把内存的控制权交给了程序员;
静态分配内存的运行效率要比动态分配内存的效率要高,因为动态内存分配与释放需要额外的开销;动态内存管理水平严重依赖于程序员的水平,处理不当容易造成内存泄漏。
头文件中的 ifndef/define/endif 干什么用?
预处理,防止头文件被重复使用,包括 pragma once 都是这样的
宏定义求两个元素的最小值
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
分别设置和清除一个整数的第三位?
#define BIT3 (0x1<<3) static int a;
void set_bit3(void){ a |= BIT3;
}
void clear_bit3(void){ a &= ~BIT3;
}
用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
预处理器标识#error 的目的是什么?
抛出错误提示,标识外部宏是否被定义!
嵌入式系统中经常要用到无限循环,你怎么样用 C 编写死循环呢?
记住这是第一方案!!!!
while(1)
{
}
一些程序员更喜欢如下方案:
for(;;){
}
汇编语言的无线循环是:
Loop:
...
goto Loop;
用变量 a 给出下面的定义
一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 int (*a[10])(int);
中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展— 让标准 C 支持中断。具代表事实是,产生了一个新的关键字 interrupt
memcpy 函数的实现
void *memcpy(void *dest, const void *src, size_t count) { char *tmp = dest;
const char *s = src;
while (count--)
*tmp++ = *s++; return dest;
}
Strcpy 函数实现
char *strcpy(char *dst,const char *src) { assert(dst != NULL