在声明数组时计算其大小,而在函数中传入数组时,它会退化为指针,因此 `sizeof(str)` 返回的是指针的大小,不是数组的实际长度。正确的做法是将数组长度作为参数传递,或者在函数外部计算并保存数组长度。 【知识点详解】 1. C 语言基础: - 数组定义与初始化:例如 `int a[2][2]={{1},{2,3}}` 定义了一个二维数组,`a[0][1]` 的值为 2,因为初始化时第二行被解析为 `{2, 3}`。 - 指针与运算符:指针可以进行比较运算,但要注意不同类型指针之间的比较可能不合法。题目中的第 3 题需要考虑指针类型。 - switch 语句:在 C 语言中,`switch` 语句的 case 变量可以是整型或枚举类型,题目中的 float 类型不正确。 - 预处理指令:`#define` 用于创建宏定义,例子中的 `print(x)` 宏展开会在字符串中插入变量 x 的文本。 2. C 语言进阶: - 指针与数组:`int (*ptr)()` 定义了 ptr 为指向函数的指针,不是一维数组的名字。 - 动态内存分配:`malloc` 函数用于动态分配内存,`setmemory` 函数示例中,通过指针间接分配内存并赋值,但在释放内存时要小心内存泄漏。 - 指针运算:`(ptr++)+=123;` 是指针自增后加上 123,这可能会导致未定义行为,如果 ptr 指向的不是数组,其结果是不确定的。 3. 预编译: - 预编译的作用是在实际编译之前处理头文件中的宏定义和其他预编译指令,提高编译效率。 - 需要预编译的情况包括:频繁使用的大型头文件,多模块程序共享相同的包含文件和编译选项。 4. C 语言特性: - 常量指针与指针常量:`char * const p` 指针不可变,`char const * p` 指向的内容不可变,`const char *p` 同义。 - 字符串与指针:数组变量如 str1~str4 在内存中有独立的存储空间,而指针变量如 str5~str8 指向相同的常量区,比较它们的地址会得到不同的结果。 - 字符串处理函数:`strcmp` 函数用于比较两个字符串,返回值为 0 表示相等,不等于 0 表示不等。 - 回文字符串:`fun` 函数用于检测字符串是否为回文,即正读反读都一样,可以通过双指针或反转字符串的方法实现。 5. 编程错误分析: - 在 `UpperCase` 函数中,`sizeof(str)/sizeof(str[0])` 在函数内部计算会得到指针的大小,而不是数组长度,应将数组长度作为参数传递或在函数外部计算。 这些知识点涵盖了 C 语言的基础和进阶内容,对于华为软件工程师笔试题来说,理解和掌握这些知识点是非常重要的。在准备笔试时,除了这些基础知识,还需要熟悉数据结构、算法、操作系统、计算机网络等相关领域知识。
剩余34页未读,继续阅读
- 粉丝: 16
- 资源: 259
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 信捷XC PLC与力士乐VFC-x610变频器通讯程序原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等 程序采用轮询,可靠稳定 器件:信捷XC3的PLC,博世
- CMIP6 变量详细表格
- KF2EDGK系列5.08接线端子,带3D封装
- 信捷XC PLC与3台力士乐VFC-x610变频器通讯通讯 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等 程序采用轮询,可靠稳定 器件:信捷XC3的PLC
- org.xmind.ui.mindmap-3.6.1.jar
- 16台搅拌机定时控制程序16台搅拌机定时控制,使用三菱FX系列PLC,威伦通触摸屏,具备完善的控制功能
- 微网双层优化模型matlab 采用yalmip编写三个微网的分层优化模型,考虑电价的负荷响应,综合配电网运营商收益和用户购电成本,程序运行稳定
- rv1126交叉编译工具链gcc-arm-8.3-2019.02-x86-64-arm-linux-gnueabihf.tar.xz和安装步骤
- 1960-2023年世界各国国民总收入数据
- 风储深度调峰模型matlab 考虑风储的调峰模型,采用cplex作为求解器,实现不同主体出力优化控制,程序运行稳定,有参考资料,
- 计算机系统安全性与性能评估:IOMMU在Linux环境下的性能研究及其优化策略
- 电动汽车蒙特卡洛分析matlab 通过matlab程序编写电动汽车蒙特卡洛模型,得到汽车行驶里程的概率分布曲线和充电功率曲线,程序运行可靠,有参考资料
- 考虑交通流量的电动汽车充电站规划matlab 程序采用matlab编制,采用粒子群算法,结合交通网络流量,得到最终充电站规划方案,程序运行可靠
- rustdesk-1.3.6-x86-64.msi
- 电动汽车优化模型matlab 狼群算法
- 你还在为伺服驱动器 FPGA架构苦恼吗,本方案FPGA代码实现电流环 速度环 位置环 SVPWM 坐标变 测速 分频 滤波器等,程序方便移植不同的平台,具有很高的研究价值