黄岛网站建设哪家好,wordpress文章下载美化框,淘宝做网站推广怎么样,线上推广的三种方式1、 什么是数组指针#xff0c;什么是指针数组#xff1f;
数组指针#xff1a;指向数组的指针 指针数组#xff1a;数组中的元素都是指针 2、 什么是位段#xff0c;什么是联合体 位段#xff08;Bit Field#xff09;#xff1a;在C语言中#xff0c;允许在一个整数… 1、 什么是数组指针什么是指针数组
数组指针指向数组的指针 指针数组数组中的元素都是指针 2、 什么是位段什么是联合体 位段Bit Field在C语言中允许在一个整数类型的数据结构中定义若干个长度为任意比特位的字段。 联合体Union允许多种数据类型的变量共用同一块内存区域。
3、 什么是递归什么是回调 递归函数直接或间接地调用自身的过程。 回调一个函数作为参数传递给另一个函数并由后者在适当的时候调用前者。
4、 什么是越界什么是溢出 越界访问超出数组或其他容器范围的元素。 溢出数值超过了其表示范围的最大值或最小值。
5、#define和typedef的区别
#define宏定义用于创建常量、替换字符串等。 typedef类型别名用于创建新的类型名称。
6、 Static与extern的作用 static限制变量或函数的作用域。 extern声明外部链接性可以在其他文件中使用该变量或函数。
7、 二级指针和二维数组有什么关系
二级指针可以用来操作二维数组。例如 int** ptr (int**)malloc(sizeof(int*) * rows);
8、 栈内存堆内存数据区有啥区别 栈内存自动分配和释放存储局部变量和函数调用信息。 堆内存动态分配和释放通过new/malloc申请delete/free释放。 数据区静态分配存储全局变量和静态变量。
9、 负数及浮点型数据在内存中是如何存放的 负数通常采用补码形式存储。 浮点数按照IEEE 754标准存储分为符号位、指数位和尾数位。 [负数及浮点型数据在内存中是如何存放的博文参考链接]
10、 如何在代码中打印所在文件名函数名及行号
使用预处理器宏__FILE__、__FUNCTION__和__LINE__。__FILE____func____LINE__eg: printf(%s-%s-%d\n, __FILE__,__func__,__LINE__); 11、 局部变量能否和全局变量重名
可以但局部变量会屏蔽同名的全局变量。
12、 如何引用一个已经定义过的全局变量
直接使用变量名即可。
13、 全局变量可不可以定义在可被多个.C文件包含的头文件中为什么
不建议这样做因为会导致链接错误。应该在某个.C文件中定义在头文件中声明。
14、 static全局变量与普通的全局变量有什么区别static函数与普通函数有什么区别 static全局变量只在当前文件内有效。
static局部变量在整个程序运行期间都存在。 static函数只能在当前文件内部调用。
15、 写出float x 与“零值”比较的if语句。
// if (fabs(x) FLT_EPSILON) if ( x 0.000001 x -0.000001)
16、 Struct与union的区别
Struct成员按顺序依次排列每个成员有自己的空间。
Union所有成员共享同一块内存空间。
17、 关键字volatile有什么含义?并给出三个不同的例子
volatile指示编译器不要对变量进行优化确保每次读写都是实际的硬件操作。
示例
1. 外部设备寄存器 2. 共享内存 3. 实时系统中的信号
18、 C语言程序代码优化方法
- 减少不必要的计算 - 避免重复计算 - 使用更高效的数据结构 - 合理利用缓存
19、 物理地址虚拟地址逻辑地址和总线地址的区别
- 物理地址内存的实际地址。 - 虚拟地址操作系统提供的抽象地址。 - 逻辑地址汇编语言中的地址。 - 总线地址计算机总线上使用的地址。
20、 关键字const有什么含意
- const声明变量或对象不可修改。
21、malloc0 的意义
在C语言中malloc函数用于动态分配内存。 根据C标准malloc(0)的行为可能因编译器和系统而异。针对malloc(0)的调用 可能会返回以下两种结果之一: 1.返回一个非空指针:在这种情况下,该指针不能用于访问任何内存,但可以被传递给free函数以释放该块内存。这意味着malloc(0)返回的指针和正常返回的指针具有相同的属性即你可以将其传递给free(而不会引|发错误。 2.返回.NULL指针:在这种情况下malloc(0)表示动态内存分配失败。此时,你需要检查返回的指针是否为NULL,以确保在使用该指针之前不会出现问题。
#include stdio. h
#include stdlib. hint main() { void *ptr-mal1oc(0) ;if (ptrNULL) {printf ( Memory allocation failed. \n ); }else { printf( Memoryallocation successed. \n); //释放内存free(ptr); }return 0;
}
为了确保代码在不同的编译器和系统上正确运行请始终检查malloc的返回值而不是假定其 行为。这样即使在malloc(0)返回非空指针或NULL指针的情况下代码仍将正确运行。