只有多写代码,才能多遇BUG,才能多多提升。
第一遍学完数据结构,就很少再认真写数据结构代码了,现在写一个算法,实现某个功能,没有一个在实际操作中一次性运行正确。偶尔一两个运气好,修改一两次就能得到正确结果,但是其中的逻辑有时候,还是凭感觉,其实就是一句话,写的代码太少了。
在写程序过程中,总会因为所谓“粗心”忘掉很多东西,比如*,&。而这些东西丢失不容易被发现,而且错误还比较难修改。今天遇到的是
使用了非初始化的局部变量
。
以前遇到过这种情况,指的是定义一个变量,结构体,对象等,未初始化就进行操作,会报这个错误。还有一种情况就是,
在函数调用过程中,如果参数不是引用调用,那就必须要对其进行初始化,如果是引用调用,就没有影响。我的报错是因为参数丢了“&”符号
。
int InitSqList(SqList S)
上面是错误代码,下面是正确代码
int InitSqList(SqList & S)
只有多写代码,才能多遇BUG,才能多多提升。第一遍学完数据结构,就很少再认真写数据结构代码了,现在写一个算法,实现某个功能,没有一个在实际操作中一次性运行正确。偶尔一两个运气好,修改一两次就能得到正确结果,但是其中的逻辑有时候,还是凭感觉,其实就是一句话,写的代码太少了。报错类型在写程序过程中,总会因为所谓“粗心”忘掉很多东西,比如*,&。而这些东西丢失不容易被发现,而且错误还...
//
C4700
:
使用
了
未
初始化
的
局部变量
“s”
//这是
c++
的重要准则,凡指针被
使用
,必先
初始化
指针
//将其改成char s[50];后,就给指针型
变量
s一个
初始化
的机会,
//类似数组
初始化
与指针类型数组声明区别,给定具体容量大小
未
初始化
的
局部变量
使用
.
在 C 和
C++
,默认情况下不
初始化
局部变量
。
未
初始化
的
变量
可以包含任何值,
使用
可能导致
未
定义的行为。 警告
C4700
指几乎总是指示在程序中可能导致不可预知的结果或崩溃的 bug。
微软官方解释
报错
特点
如*,&。这些细小的东西丢失但不容易被发现
报错
原因
C语言中,定义
局部变量
时如果
未
初始化
,则值是随机的,这是为什么呢?
定义
局部变量
,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个
局部变量
名绑定。因为这段内存空间在栈上,而栈内存是反复
使用
的(脏的,上次用完没清零的),所以说
使用
栈来实现的
局部变量
定义时如果不显式
初始化
,值就是脏的。c语言中只有
局部变量
在
未
赋初值时,才是随机数,全局
变量
和静态
变量
未
赋初值时编译器会自动将其
初始化
为0。
局部变量
是分配在堆栈上的,而全局
变量
和静态
变量
是分配在数据段中的。这个跟程序的内存分配是有关系的。