常见错误一: “=” 和“==”混在一起
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为指向整个数组的指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)