指標,野指標,空指標,賦值?
阿新 • • 發佈:2019-01-03
bug中最可怕的是野指標,那麼問題來了,野指標是什麼?是如何產生的?為什麼程式設計師會“忘記”?
這時a的值變為正常亂碼消失了
昨天除錯時,我發現了一個野指標,由此我明白了。
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的產生也就順理成章了
當然,這只是我個人的一些想法,如有不對的地方請大家指正。