您的位置:首页 > 其它

指针,野指针,空指针,赋值?

2016-09-25 07:32 246 查看
bug中最可怕的是野指针,那么问题来了,野指针是什么?是如何产生的?为什么程序员会“忘记”?
昨天调试时,我发现了一个野指针,由此我明白了。





a的值成了乱码,而且gcc编译器并没有报错,那么请看下面的代码

#include <stdio.h>

int fun(int *a)
{
int i;
*a=0;//添加的代码
for(i=0;i<10;i++)
(*a)++;
return 0;
}

int main()
{
int a,c;
c=fun(&a);
printf("c=%d,a=%d",c,a);
}



这时a的值变为正常乱码消失了
那么我们假设a是指针,一旦我们如同该代码一般不让a指向元素的话,编译器

必然是会报错的,那么我们不如假设int a就是指针,那么a=0就是指针指向空

地址的操作,也就是说int a就是在定义一个指针,a=0就是指针在指向0地址

a++就是指针由0地址指向1地址。如果这样来说的话,那么一切也都能说的通

了。int a其实就是在定义一个指针,赋值是指针在指向一个地址。

如此看来的话,c语言就是类型和指针两样东西在操作。

于是,bug的产生也就顺理成章了

当然,这只是我个人的一些想法,如有不对的地方请大家指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: