2014-02-14 57 views
0

我有以下的C程序。不懂指針

#include <stdio.h> 
int main() 
{ 
    int *p, *q; 
    *p=5; 
    *q=6; 
    printf("%d %d", *p, *q); 
    return 0; 
} 

該代碼未運行。這段代碼有什麼問題?

+0

爲了將來的參考,而不是「代碼沒有運行」,請告訴我們它是如何失敗的。如果出現錯誤消息,請將其複製並粘貼到您的問題中。這種情況下問題很簡單,但下次可能不會。 –

+0

[comp.lang.c FAQ](http://www.c-faq.com/)是一個很好的資源。第4部分包括指針。 –

回答

1

您的指針未初始化,它們需要使用malloc指向有效內存或通過獲取局部變量的地址。

#include <stdio.h> 
int main() 
{ 
    int p, q; 
    int *pp = &p; 
    int *pq = &q; 
    *pp=5; 
    *pq=6; 
    printf("%d %d", *pp, *pq); 
    return 0; 
} 

會工作。

+0

我如何初始化它們? –

+0

編輯我的答案。只顯示局部變量,因爲我不明白爲什麼你會使用新的這種情況。 –

+0

我有一個問題。指針是否只能保存內存地址? –