常见错误解析二维数组的初始化 char arr[13][13] ;memset(arr,(unsigned char)*,sizeof(char)*13*13 位操作符 对补码进行的操作符~按位取反 ~5 -6 按位符中唯一一个单目操作符按位与|按位或^按位异或双目memmove memset memcpy memcmp 四者均会把\0看作普通字符对待strcat/strcpy/strstr/strtok/strcmp均将\0作为字符串结束标志是函数逻辑的核心memcpy memmove 需要完全拷贝时需要将\0计算进去。short -32768---32767二叉树销毁所暴露出来的局部变量与前置空问题void BinaryTreeDestory2(BTNode** root) { if (root NULL || *root NULL) return; if ((*root)-left NULL (*root)-right NULL) { free(*root); root NULL;//依旧是仅修改局部变量 return; } BinaryTreeDestory(((*root)-left)); BinaryTreeDestory(((*root)-right)); }错误原因修改了二级指针的值 以为修改了 B 节点左指针的值反思形参是实参的临时拷贝对于指针不能修改对于整数可以修改理解它俩的原因就可以明白复杂析构顺序问题设已经有A,B,C,D4个类的定义程序中A,B,C,D析构函数调用顺序为 //.cpp C c; int main() { A a; B b; static D d; return 0 }B-A 程序结束-D全局对象最后析构-C自增运算符的前缀、后缀问题部分选择题可能设坑把字符串转换为整数0.返回整数作为最终结果return 1.auto i i是**拷贝数据**不是下标。2.[k] 仅这一种情况无法触发自动扩容。3.符号导致逻辑混乱 字符转整型不知道怎么办 题意理解不充分。4.瞬记前置条件5.整型大数越界问题6.size_t类型做下标时一定非负性质7.reverse左闭右开小数输出printf(%f,3.14);%f默认保留6位new初始化不能 int* s2 new int[26](0); 而是 int* s2 new int[26]();//自动全部初始化为0struct内部嵌套struct与union的模糊问题联合体不能同时包含多个活动成员- 一次只能使用一个成员枚举定义位置不当- 应该在联合体外或正确嵌套外侧多个联合体-仍保持各自单独属性。//联合体 struct giftList { //公共属性 int memory;//库存 float singleVal;//单价 //商品类型 char goodType[20]; //商品属性 struct goodsattribute { union books { char bookName[30]; char authorName[20]; //书籍版本 enum version { Ⅰ, Ⅱ, Ⅲ, Ⅳ, Ⅴ }; size_t page; }; union cup { char design[30]; }; }; };void main()与int main()void main()仅适用于旧编译器。赋值运算符的结合性、优先级及运算顺序int main() { int a 5; int b a a - a / a/2; }运行结果解释根据运算符的结合顺序与优先级(赋值运算符全部为仅高于逗号表达式(唯一一个最低优先级的运算符)的运算符) 推出从左向右依次计算。sizeof与strlen在C下二者的的使用类似于C下。sizeof是操作符也是一个关键字用于计算类型/表达式(的类型)大小。strlen()是一个函数计算字符串的大小。函数原型如下size_t strlen(const char* s);注意在C中iostream包含strlen但是在C中需要包含string.h构造中拷贝构造与构造函数如果没有显示写构造那我调用自动生成的构造函数 如果写了那么我调用你写的构造函数(包括拷贝构造函数)。所以有当我们使用构造函数时若构造函数没有写 但写了拷贝构造那么调用构造函数时会转向拷贝构造的执行。vector的溢出问题vectorlong v(ma - mi 1); //内部推测int所以vector就算使用long也 不行main()双报错解析指链接阶段找不到程序入口main()函数 //编译下可能通过
常见错误解析1.0
发布时间:2026/5/15 16:25:12
常见错误解析二维数组的初始化 char arr[13][13] ;memset(arr,(unsigned char)*,sizeof(char)*13*13 位操作符 对补码进行的操作符~按位取反 ~5 -6 按位符中唯一一个单目操作符按位与|按位或^按位异或双目memmove memset memcpy memcmp 四者均会把\0看作普通字符对待strcat/strcpy/strstr/strtok/strcmp均将\0作为字符串结束标志是函数逻辑的核心memcpy memmove 需要完全拷贝时需要将\0计算进去。short -32768---32767二叉树销毁所暴露出来的局部变量与前置空问题void BinaryTreeDestory2(BTNode** root) { if (root NULL || *root NULL) return; if ((*root)-left NULL (*root)-right NULL) { free(*root); root NULL;//依旧是仅修改局部变量 return; } BinaryTreeDestory(((*root)-left)); BinaryTreeDestory(((*root)-right)); }错误原因修改了二级指针的值 以为修改了 B 节点左指针的值反思形参是实参的临时拷贝对于指针不能修改对于整数可以修改理解它俩的原因就可以明白复杂析构顺序问题设已经有A,B,C,D4个类的定义程序中A,B,C,D析构函数调用顺序为 //.cpp C c; int main() { A a; B b; static D d; return 0 }B-A 程序结束-D全局对象最后析构-C自增运算符的前缀、后缀问题部分选择题可能设坑把字符串转换为整数0.返回整数作为最终结果return 1.auto i i是**拷贝数据**不是下标。2.[k] 仅这一种情况无法触发自动扩容。3.符号导致逻辑混乱 字符转整型不知道怎么办 题意理解不充分。4.瞬记前置条件5.整型大数越界问题6.size_t类型做下标时一定非负性质7.reverse左闭右开小数输出printf(%f,3.14);%f默认保留6位new初始化不能 int* s2 new int[26](0); 而是 int* s2 new int[26]();//自动全部初始化为0struct内部嵌套struct与union的模糊问题联合体不能同时包含多个活动成员- 一次只能使用一个成员枚举定义位置不当- 应该在联合体外或正确嵌套外侧多个联合体-仍保持各自单独属性。//联合体 struct giftList { //公共属性 int memory;//库存 float singleVal;//单价 //商品类型 char goodType[20]; //商品属性 struct goodsattribute { union books { char bookName[30]; char authorName[20]; //书籍版本 enum version { Ⅰ, Ⅱ, Ⅲ, Ⅳ, Ⅴ }; size_t page; }; union cup { char design[30]; }; }; };void main()与int main()void main()仅适用于旧编译器。赋值运算符的结合性、优先级及运算顺序int main() { int a 5; int b a a - a / a/2; }运行结果解释根据运算符的结合顺序与优先级(赋值运算符全部为仅高于逗号表达式(唯一一个最低优先级的运算符)的运算符) 推出从左向右依次计算。sizeof与strlen在C下二者的的使用类似于C下。sizeof是操作符也是一个关键字用于计算类型/表达式(的类型)大小。strlen()是一个函数计算字符串的大小。函数原型如下size_t strlen(const char* s);注意在C中iostream包含strlen但是在C中需要包含string.h构造中拷贝构造与构造函数如果没有显示写构造那我调用自动生成的构造函数 如果写了那么我调用你写的构造函数(包括拷贝构造函数)。所以有当我们使用构造函数时若构造函数没有写 但写了拷贝构造那么调用构造函数时会转向拷贝构造的执行。vector的溢出问题vectorlong v(ma - mi 1); //内部推测int所以vector就算使用long也 不行main()双报错解析指链接阶段找不到程序入口main()函数 //编译下可能通过