C语言中常见的逻辑错误
admin
2024-02-09 08:10:59

 

常见错误一: “=” 和“==”混在一起

  

int  main()
{int ret;if(ret = 1){ ......}return 0;
}

结果:变量被错误赋值,逻辑判断错误

错误二: 定义较大的全局变量造成 编译文件过大

int a[2000][2000]            int a[2000][2000] ={0}int main(){                     int main(){return 0                          return 0
}                                }

 节省内存空间,没必要浪费过多的全局栈区

 同理 局部变量也需要避免过大定义,造成堆栈溢出现象

 如果实在需要定义大数组 建议用malloc定义在堆区 因为堆区空间相比栈区大的多

 错误三:返回无效指针

char* func()
{char arr[100];strcpy(arr,"hello");return arr;}

 字符串赋值栈空间 当程序执行后空间释放 所指向的数据不存在 ,继续读写程序会崩掉

错误四:联合体的初始化

typedef union myunion
{int x;short y;
}UN;UN ux = {4,1};

很遗憾C不支持初始化unuion的任意成员,只能初始化第一个成员。

错误五:在同类文件中声明数组 采用extern int* array

 如果定义int  array[9];

在其他文件中引用必须 extern int array[];

在数组中 int a[20]; a为指向第一个元素的指针, &a为指向整个数组的指针。

 

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...