1. 程式人生 > >指標,野指標,空指標,賦值?

指標,野指標,空指標,賦值?

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的產生也就順理成章了

當然,這只是我個人的一些想法,如有不對的地方請大家指正。