【持续更新_细枝末节】

发布时间:2026/8/15 11:31:03
【持续更新_细枝末节】 目录gzHaiGeconst和volatile可以同时修饰一个变量register协议默认端口号SQL语言的功能同一进程中的线程究竟共享哪些资源同一进程中的线程究竟不共享哪些资源不同网段ping不通白盒测试DBMS编译错误switch_break代码解析sz魔力C语言程序编译和链接函数内定义变量时存储类型符省略RISC精简指令集计算机典型特点指令集长度PC 系统机和嵌入式系统static 全局变量 vs 普通全局变量static 局部变量 vs 普通局部变量static 函数 vs 普通函数gzHaiGeconst和volatile可以同时修饰一个变量例如volatile const int loc;表示含义为整型变量loc为只读变量在编译过程中值不会发生改变同时编译器不 会对loc进行优化。registerregister static int i 0register寄存器变量请求编译器将变量保存在CPU中加快程序的运行。 static静态数据存放于全局数据区用static修饰的变量在程序整个运行期间都不会释协议默认端口号HTTP协议代理服务器常用端口号80/8080/3128/8081/9080http协议FTP文件传输协议代理服务器常用端口号21SSH安全登录、SCP文件传输、端口重定向默认的端口号为22/tcpTelnet远程登录协议代理服务器常用端口23TFTPTrivial File Transfer Protocol默认的端口号为69/udpSIP会话初始协议默认端口号5060/udpSQL语言的功能SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言 (DML)及数据控制语言(DCL)同一进程中的线程究竟共享哪些资源A进程代码段、进程的共有数据、进程打开的文件描述符、信号的处理器、 进程的当前目录和进程用户ID与进程组ID、堆内存。同一进程中的线程究竟不共享哪些资源a、线程IDb、寄存器组的值c、线程的堆栈d、错误返回码e、线程的信号屏蔽码f、线程的优先级 堆、栈、堆栈、队列有什么区别不同网段ping不通有两台计算机A、B其中A的IP地址设置为10.10.1.1/24,B的IP地址设置为192.168.1.1/24A和B经过一台二层交换机相连发现A和B之间ping不通为什么ping不同解决方法原因二层交换机只工作在数据链路层它只根据MAC 地址转发数据帧不识别 IP 地址也不进行路由转发A 和 B 处于不同子网它们会认为对方不在本地网络因此不会将数据包直接发给对方而是试图发给默认网关但未配置导致ping 不通。解决办法法一改为同一网段最简单将 A 的 IP 改为192.168.1.2/24或 B 改为10.10.1.2/24使两者处于同一子网。法二加入路由器/三层交换机如果必须保留现有 IP则需要在网络中增加一台路由器或三层交换机并配置 A 和 B 的默认网关指向该路由器由路由器实现跨网段转发。白盒测试白盒测试一般适用于单元测试DBMSDatabase Management System数据库管理系统事务是 DBMS的基本单位它是用户定义的一组逻辑一致的程序序列编译错误原因分析在 C 语言中**赋值运算符的左操作数必须是可修改的左值lvalue**即具有明确内存地址的变量或表达式。a 7 是一个**计算结果右值**它没有内存地址**不能作为赋值的目标**不能放在 的左边。编译器会报错**“invalid lvalue in assignment”** 或类似错误。因此程序**无法通过编译**选 **A**。switch_break代码解析答案B原因分析1. 参数传递- 0x32 是十六进制等于十进制 50在 ASCII 码中对应字符 **2**。-函数参数类型为 char接收后转换为字符 2。2. switch 匹配- 匹配到 case 2:。3. 执行流程注意没有 break- 执行 printf(2); 无 break继续向下执行。- 进入 case 3:执行 printf(3);遇到 break 退出。4. 结果- 依次打印 2 和 3最终输出 23。sz魔力C语言程序编译和链接C语言程序编译和链接 编译过程不会修改源程序结构并非所有需要的资源都会被链接进可执行文件编译器的所有操作都在内存中进行并生成新的文件而不是原地修改源文件。并非所有需要的资源都会被链接进可执行文件静态链接会将代码中用到的库函数如printf的二进制代码直接复制到最终的可执行文件中。这部分资源被链接进去。动态链接在 Windows 上是.dll文件在 Linux 上是.so文件。可执行文件只记录需要调用哪个动态库中的哪个函数而不包含该库的具体代码。这些资源在程序运行时才由操作系统加载到内存中而不是被“链接进”可执行文件本身。因此“所有需要资源均被链接进可执行文件”的说法是片面的对于动态库它们并未被包含进.exe或可执行文件内。函数内定义变量时存储类型符省略auto可以省略表示自动存储期栈上分配函数结束时释放。RISC精简指令集计算机典型特点指令长度固定通常为 32 位。大多数指令在一个时钟周期内执行。拥有更多通用寄存器。使用 Load/Store 架构只有加载和存储指令访问内存。“指令长度不固定执行需要多个周期”是CISC复杂指令集计算机的特点如 x86 架构。指令集长度ARM 指令集是32 位的固定长度指令Thumb 指令集是16 位的压缩指令集旨在提高代码密度。PC 系统机和嵌入式系统PC 系统机和嵌入式系统尤其是运行 RTOS 的嵌入式系统都能执行多任务。系统内核小、专用性强、系统精简主要是嵌入式系统的特点PC 系统通常不满足。static 全局变量 vs 普通全局变量①作用域不同普通全局变量作用域是整个程序所有 .c 文件其他文件通过 extern 声明后可访问。static 全局变量作用域 “ 仅限于定义它的当前 .c 文件 ”其他文件无法访问即使使用 extern 也不行。②用途不同普通全局变量用于多文件共享的数据如跨模块的配置参数。static 全局变量用于 “模块内部私有 ” 的全局数据只在该文件内部使用避免命名污染。③链接属性不同普通全局变量具有 “ 外部链接属性 ”在链接阶段可被其他目标文件引用。static 全局变量具有 “ 内部链接属性 ”在链接阶段对其他目标文件不可见因此 “ 不会与其他文件中的同名变量冲突 ”提高了封装性。static 局部变量 vs 普通局部变量①生命周期不同普通局部变量在栈区分配函数执行结束后 “ 自动释放 ” 。static 局部变量在 “ 静态存储区 ” 分配“ 程序启动时创建程序结束时才释放 ”函数结束后值仍保留。②初始化次数不同普通局部变量每次函数调用都会重新创建并初始化若未显式赋值则为随机值。static 局部变量 “ 只初始化一次 ”编译期完成后续函数调用 “ 跳过初始化 ”直接使用上次的值。③初始值默认值不同普通局部变量若不显式初始化其值为 “ 随机值垃圾值”。static 局部变量若不显式初始化编译器 “ 自动将其初始化为 0 ”或空指针。static 函数 vs 普通函数①作用域不同普通函数在整个程序中可见其他文件可以调用。static 函数“ 仅在定义它的当前 .c 文件内可见 ”其他文件无法调用。②链接属性不同普通函数具有 “ 外部链接属性 ”可供其他目标文件链接使用。static 函数具有 “ 内部链接属性 ” 对其他目标文件 “ 隐藏 ” 因此 “ 不会与其他文件中的同名函数冲突 ”。③用途不同普通函数作为模块的 “ 公共接口 ” 供其他模块调用。static 函数作为模块的 “ 内部工具函数 ”仅供本文件使用不对外暴露“ 增强了封装性和代码安全性 ”也允许内部调整实现而不影响外部。核心 static 本质上就是 “ 信息隐藏 ” ——把数据或函数限制在它该待的地方让外部无法访问从而降低耦合度、减少命名冲突。