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