2015-01-06 34 views
-5

我試圖打印變量的值,其中一個是指針,第二個是簡單的int。Getline()在for循環中保持跳過行

我確實給指針指派了一個值 - a,並且我分配了指向變量的指針。我試圖輸出顯示指針值的變量值,但我沒有任何意義。

由於編譯器顯示以下警告:

「一」用於未初始化在這個函數

和編譯proccess完成最終後,我得到的錯誤運行程序時,Windows彈出告訴我:

「0x00401359處的指令引用0x00417c7e處的內存,無法寫入內存,單擊」確定「以終止程序。

這段代碼有什麼問題?

#include <iostream> 

using namespace std; 

int main(void) 
{ 
    int *a; 
    int b; 
    *a = 5; 
    b = *a; 

    cout << b << " " << *a; 

} 
+2

您的標題與問題無關。 – 0x499602D2

+3

你如何看待你的編譯器的警告:*'a'在這個函數中被單獨使用*? –

+0

您需要先爲指針分配內存。 – Matt

回答

2

a是一個指針,它應該指向某個地方。如果您不初始化它,它就會指向任何地方,因此您的任務*a=5會嘗試寫入隨機存儲器地址。

#include <iostream> 

using namespace std; 

int main(void) 
{ 
    int c;  // reserves some space for a to point to 
    int *a = &c; // NOW a is initialized and it points to c 
    int b; 
    *a = 5;  // writes 5 into the variable c 
    b = *a; 

    cout << b << " " << *a; 

} 
2
#include <iostream> 

using namespace std; 

int main(void) 
{ 
    int *a; 
    int b; 
    a=&b; 
    *a = 5; 

    cout << b << " " << *a; 

} 

你的指針沒有一個變量的地址可在其上保存該值。