我剛剛開始學習C,我一直在使用MinGW for Windows運行一些簡單的程序來理解指針如何工作。我試過如下:直接將值分配給C指針
#include <stdio.h>
int main(){
int *ptr;
*ptr = 20;
printf("%d", *ptr);
return 0;
}
其正確的編譯,但是當我運行可執行它不工作 - 該值不會被打印到命令行,而不是我得到的.exe文件發出錯誤訊息已停止工作。
然而,當我試圖在一個int變量並分配* ptr轉到該變量的存儲器地址存儲的值,如下所示:
#include <stdio.h>
int main(){
int *ptr;
int q = 50;
ptr = &q;
printf("%d", *ptr);
return 0;
}
它工作正常。
我的問題是,爲什麼我無法直接設置文字值的指針?我已經在線查看了教程,其中大部分都和第二個例子一樣。
任何幫助表示讚賞。
指針未初始化的原因 - 它可能指向幾乎任何地方並可能導致程序崩潰。 – Till
你很幸運,它終止了一個錯誤。 – JonnyRo
@JonnyRo是對的。在真實的代碼中,這種錯誤往往會導致爲期一週的調試會話,試圖找出爲什麼其他變量每隔一段時間就會隨機更改一次(從不在實際測試它時,總是在做時公開演示)或安全漏洞,通過操縱不同的值來將「is_admin」標誌設置爲true。 – abarnert