c语言学指针变量,C语言指针变量学习五
//下面的程序演示了指針沒有被人為手動分配存儲空間的錯誤
#include
int main()
{
int * p;
int i = 5;
*p = i;
printf("*p=%d\n", *p);
return 0;
}
指針變量一開始沒有在程序中控制去分配內存單元,會導致,編譯器自動分配一個臨時的內存單元給p,
這個內存單元是不被控制的,當執行到*p = i;的時候,這個臨時的內存單元中的值被改成了5,這是有很大
風險的,這個零時的內存單元中的值有可能是另外一個很重要的程序要使用,結果讓你給改了,你還不知道
你改了什么地方的值。
VC6.0下編譯這個程序會有警告,執行后會卡死。現在明白了吧,自己寫的程序似乎編譯沒問題,但運行卡死了,
大多數情況下,這個C程序可能寫的的很大問題。
編譯器自動分配給變量的零時值稱之為垃圾值,如果給一個指針變量一個垃圾值,不再給指針變量重新賦予新地址,
很可能就變成, 胡亂的指向不受控制的內存單元,不受控制改掉了內存單元中的值,寫程序的人還沒察覺到,
這是極其危險的。
//下面的程序演示了*q相當與整型變量,而p是整型指針變量,整型指針變量賦給整型變量
#include
int main()
{
int i = 5;
int * p;
int * q;
p = &i;
*q = p;
printf("*q=%d\n", *q);
return 0;
}編譯時后程序會報錯covert? from int * to int
總結
以上是生活随笔為你收集整理的c语言学指针变量,C语言指针变量学习五的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牙冠崩瓷了怎么办
- 下一篇: 单片机读tf卡c语言程序,单片机读写SD