C语言Plus 2020-04-30
C语言是一种很灵活的语言,在程序调试过程中常常会遇到一些难解决的问题,一般语法错误计算机能检测出来,而逻辑错误计算机则检测不出来。这给教师的教学带来比较多的麻烦,也大大削减了学生学习的自信心。所以我把易出错的知识点进行一一列举。
同学:老师,这个什么问题,运行之后没有输出,也不报错!
int *p = NULL; *p = 6; printf("%d", *p);
老师:这个没有语法错误,但是有逻辑错误,按道理来说,运行的时候编译器要报错的!
p指向的是NULL,此时没有给指针分配有效的内存空间,所以赋值是失败的,并且也是非法的。要想使用必须先给p一个有效的空间,你可以让他指向一个变量,或者动态分配一个空间。
int temp; int *p = &temp; *p = 6; printf("%d", *p); //或者,动态申请的内存一定要记得释放哦 int *p = (int*)malloc(sizeof(int)); *p = 6; printf("%d", *p); free(p); p = NULL;