sizeof指针和数组的长度 Sizeof与Strlen的区别 stack和heap的区别 大小端存储情况 strcut的指针p+0x200=? (long)p+0x200=? (long *)p+ox200=? 数组地址偏移算法 const用法 static作用 volatile作用 线程间通信的机制 在C语言中,`sizeof`和`strlen`是两个经常使用的操作符和函数,它们各自有不同的用途和特性。`sizeof`用于获取一个类型或者变量在内存中占据的字节数,而`strlen`则用于计算以空字符'\0'结尾的字符串的实际长度。 1. `sizeof`操作符: - `sizeof`返回的是一个表达式或类型的字节数。例如,对于一个整型变量`int n`,`sizeof(n)`会返回4(在32位系统中)。 - 对于数组,`sizeof`会返回整个数组的大小,即使数组作为函数参数传递,也不会退化为指针,因此`sizeof(str1)`将返回字符数组`str1`的总字节数,包括结束符'\0'。 - 对于指针,`sizeof`返回的是指针本身的大小,通常为4字节(32位系统)或8字节(64位系统),如`sizeof(p1)`。 - `sizeof`可以在编译时计算,因此它可以应用于类型,如`sizeof(int)`或未初始化的数组声明,如`sizeof(char[20])`。 2. `strlen`函数: - `strlen`是一个函数,需要一个以'\0'结尾的字符串作为参数,返回字符串的长度,不包括结束符'\0'。 - `strlen`在运行时计算字符串长度,因此`strlen(str1)`会返回5,表示不包括'\0'的字符个数。 - 与`sizeof`不同,`strlen`不能用于非字符串的数组或非字符类型的指针,因为它们不会自动添加'\0'。 3. 栈和堆的区别: - 栈(Stack):栈内存由编译器自动管理,用于存储函数参数、局部变量等。栈内存的分配和释放快速,但空间有限,通常只有几MB。 - 堆(Heap):堆内存由程序员手动管理,使用`malloc`、`calloc`、`realloc`和`free`等函数进行分配和释放。堆内存可以按需分配大块内存,但操作相对较慢,并且容易产生内存泄漏。 在面试中,对这些基本概念的理解是至关重要的,它们涵盖了C语言内存管理的基础知识。了解这些可以帮助开发者避免常见的编程错误,如栈溢出、内存泄漏和指针操作不当等问题。此外,面试中可能会涉及大小端存储问题,这关乎到数据在内存中的存储顺序,以及跨平台编程时的数据交换。`struct`的指针偏移涉及到结构体成员的内存布局,而`const`、`static`和`volatile`关键字则是C语言中用于控制变量特性的关键字,分别用于常量、内部链接和易变性。线程间通信的机制则涉及到多线程编程,可能包括信号量、管道、消息队列、共享内存等方式。理解这些知识点对于编写高效、可靠的多线程程序至关重要。
2025-10-19 23:45:15 122KB
1
C语言笔试大全 C语言笔试大全是C语言编程的基础知识点总结,涵盖了C语言的基本概念、数据类型、运算符、控制结构、函数、数组、指针、结构体、文件输入/输出、预处理器等方面。下面是根据提供的内容生成的相关知识点: 1. static关键字的用途: static关键字有多种用途,包括: * 限制变量的作用域:使用static关键字可以限制变量的作用域,使其只能在当前文件中使用。 * 设置变量的存储域:static关键字可以将变量存储在静态存储域中,从而改变变量的生命周期。 2. 引用与指针的区别: 引用和指针都是用于间接访问变量的方式,但是它们有以下区别: * 引用必须被初始化,而指针不必。 * 引用初始化以后不能被改变,而指针可以改变所指的对象。 * 不存在指向空值的引用,但是存在指向空值的指针。 3. 实时系统的基本特性: 实时系统的基本特性包括: * 在特定时间内完成特定的任务。 * 具有实时性和可靠性。 4. 全局变量和局部变量在内存中的区别: 全局变量和局部变量在内存中的区别是: * 全局变量储存在静态数据库中。 * 局部变量储存在堆栈中。 5. 平衡二叉树的定义: 平衡二叉树是指左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1的二叉树。 6. 堆栈溢出的原因: 堆栈溢出一般是由没有回收垃圾资源所致。 7. 不能声明为虚函数的函数: constructor不能声明为虚函数。 8. 冒泡排序算法的时间复杂度: 冒泡排序算法的时间复杂度是O(n^2)。 9. float x 与“零值”比较的if语句: if(x>0.000001&&x<-0.000001) 10. Internet采用的网络协议: Internet采用的网络协议是TCP/IP,包括应用层、传输层、网络层、数据链路层、物理层等。 11. Internet物理地址和IP地址转换: Internet物理地址和IP地址转换采用ARP(Address Resolution Protocol)。 12. IP地址的编码分为哪两个部分: IP地址由两部分组成,网络号和主机号,但是需要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。 13. C程序设计题: 给定M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。 使用循环链表,用取余操作做。 14. switch语句的参数类型: switch语句的参数不能为实型。 15. 局部变量能否和全局变量重名: 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。 16. 如何引用一个已经定义过的全局变量: extern可以用引用头文件的方式,也可以用extern关键字。 17. 全局变量可不可以定义在可被多个.C文件包含的头文件中: 可以,在不同的C文件中以static形式来声明同名全局变量。 18.do……while和while……do有什么区别: do……while循环是一种先执行循环体然后判断的循环,而while……do是一种先判断然后执行循环体的循环。 19. static全局变量与普通的全局变量有什么区别: static全局变量的作用域限制在当前文件中,而普通的全局变量的作用域是整个源程序。 20. static函数与普通函数有什么区别: static函数的作用域限制在当前文件中,而普通函数的作用域是整个源程序。
2025-06-17 21:35:12 225KB
1
常见linux 嵌入式开发C语言笔试面试题
2024-05-20 14:33:53 75KB linux
1
2023年全国计算机二级C语言笔试真题及答案.doc
2024-03-05 19:19:13 58KB
1
2018年9月新华三C语言笔试题,找工作的小伙伴看过来,你值得拥有!
2023-02-19 09:45:18 426KB 新华三C C语言笔试题
1
全国计算机等级考试二级C语言笔试试题及答案.doc
2022-10-15 14:06:08 217KB
1
总结了一些经典的C语言笔试试题,希望对大家有用。
2022-09-02 19:42:52 135KB C语言 笔试 程序设计 面试
1
国二c语言笔试题库含复习资料可转TXT.doc
2022-07-13 13:05:34 307KB 考试
二级c语言笔试必背.doc
2022-07-12 18:04:17 157KB 考试
二级C语言笔试真题及答案-(6).doc
2022-07-12 18:04:15 47KB 考试