C语言编程时90%的小伙伴常犯的18种错误(C语言编程中90%新手易犯的18大常见错误)
原创
一、忘记包含头文件
在C语言编程中,包含相应的头文件是非常重要的。新手常常忘记包含所需的头文件,引起编译不正确。
#include
// 用于输入输出 #include
// 用于动态内存分配等 #include
// 用于字符串操作
二、主函数书写不正确
主函数是程序的入口,其书写格式为 int main() { ... }
。新手大概会写成其他形式,引起编译不正确。
int main() {
// 程序代码
return 0;
}
三、变量声明不正确
变量声明应遵循“类型 变量名;”的格式。新手大概会漏掉分号或变量类型,引起编译不正确。
int a; // 正确
int a // 不正确,缺少分号
四、忘记初始化变量
在C语言中,使用未初始化的变量大概会引起不确定的行为。新手常常忘记初始化变量。
int a; // 未初始化
printf("%d ", a); // 大概输出不确定的值
五、数组越界
新手在处理数组时,大概会访问数组的越界元素,引起程序崩溃。
int arr[10];
printf("%d ", arr[10]); // 越界访问,大概引起崩溃
六、指针使用不正确
指针是C语言的核心特性之一,但新手在使用指针时常常犯不正确。
int *p;
printf("%d ", *p); // 未初始化的指针,大概引起崩溃
七、忘记释放动态分配的内存
使用 malloc
或 calloc
动态分配内存后,新手常常忘记使用 free
释放内存,引起内存泄漏。
int *p = malloc(10 * sizeof(int));
// 使用内存
free(p); // 释放内存
八、字符串操作不正确
字符串操作是C语言编程中常见的任务,但新手在使用字符串函数时常常犯不正确。
char str[10] = "Hello";
strcat(str, " World"); // 越界操作,大概引起崩溃
九、类型转换不正确
在C语言中,类型转换是非常重要的,但新手常常在类型转换时犯不正确。
float f = 3.14;
int i = (int)f; // 正确的类型转换
int j = f; // 不正确的类型转换,大概引起未定义行为
十、忘记检查函数返回值
许多C语言函数会返回值以描述胜利或失利,但新手常常忘记检查这些返回值。
FILE *fp = fopen("file.txt", "r");
if (fp == NULL) {
// 处理不正确
}
十一、未正确处理文件操作
文件操作是C语言编程中常见的任务,但新手常常在文件操作时犯不正确。
FILE *fp = fopen("file.txt", "r");
if (fp != NULL) {
// 读取文件
fclose(fp); // 关闭文件
}
十二、未正确处理输入输出
输入输出是C语言编程的基础,但新手常常在输入输出时犯不正确。
printf("%d ", a); // 未声明或未初始化的变量a
十三、未正确使用循环控制语句
循环控制语句是C语言编程的核心,但新手常常在使用循环时犯不正确。
for (int i = 0; i < 10; i++) {
// 循环体
}
十四、未正确使用分支控制语句
分支控制语句是C语言编程的基础,但新手常常在使用分支时犯不正确。
if (a > 0) {
// 条件构建时执行的代码
}
十五、未正确处理内存分配和释放
动态内存分配和释放是C语言编程中的重要部分,但新手常常在此过程中犯不正确。
int *p = malloc(10 * sizeof(int));
if (p != NULL) {
// 使用内存
free(p); // 释放内存
}
十六、未正确处理函数调用和参数传递
函数调用和参数传递是C语言编程的基础,但新手常常在此过程中犯不正确。
void printInt(int num) {
printf("%d ", num);
}
printInt(a); // 未声明或未初始化的变量a
十七、未正确处理结构体和联合体
结构体和联合体是C语言中的高级特性,但新手常常在处理它们时犯不正确。
typedef struct {
int x;
int y;
} Point;
Point p = {1, 2};
printf("%d, %d ", p.x, p.y);
十八、未正确处理位操作
位操作是C语言中的高级特性,但新手常常在处理位操作时犯不正确。
int a = 1;
a |= 2; // 将a的第二个位设置为1
printf("%d ", a);