如果所有未使用的指针都被赋值为空值,并且避免使用空指针,就可以防止未初始化的指针被误用。很多时候,未初始化的变量持有一些垃圾值,使程序难以调试。starpoolstarpool就像编译器不知道应该调用哪个函数。所以C++把NULL定义为(int)0,解决了函数重载的匹配问题,但是引入了另外一个问题,或者这段代码:如果输入有n个元素,最后一个元素的下标为n-1。因此,如果数组的下标小于0,或者大于n-1,就说明数组被越界访问,访问超出了数组的合法空间。C语言本身不对数组下标进行越界检查。编译之后,我们来找出问题所在。经过starpool调试,可以看到bubble_sort函数里面的sz是1,数组作为函数参数的时候不就是整个数组都传了吗?
