2014-10-27 24 views

回答

1

我會盡量用簡單的方式來解釋,(對不起,如果我的英語不是神不夠我正在學習) 讓說你有一個字符數組:

char a[5]; 

然後你想創建一個指向第一個元素的地址:

char *p = &a[0]; 

既然對數組的名稱是 初始元素的位置,您可以改寫爲下面的語句的代名詞:

char *p = a; 

現在這裏是神奇的發生,作爲前一個字符指針指向你可以做的第一個元素的地址如下: 而不是從[i]中獲取'i'個元素,你可以移動指針'i'來引用地址中包含的值'第i'位然後得到它的值:

char value = *(a + i);

字體(C編程語言第2版,第5章)

2

尚未;它未初始化。

你在問什麼就像問什麼int i;指的是數字。

0

是的,它指向變量的地址。

如果變量是在函數內部聲明的,則變量可能位於堆棧上,或者如果聲明位於頂層,則位於RAM的頂部。

正如其他答案指出的那樣,您還沒有將它指向任何東西,所以解引用指針可能會導致分段錯誤。

你需要做這樣的事情

char ch; 
char *ptr = &ch; 
1
char *ptr; 

直到它被初始化它不指向任何存儲器地址; 但是你可以用它來指向一個地址。 假設,

int i=0; 

i具有在存儲器中的地址。如果它成爲0xFFFF0然後當你寫

ptr=&i; 

然後將鼠標指針指向地址0xFFFF0

現在假設,

int array[5]={0};是一個數組。

然後如果你爲寫

ptr=array; 

然後ptr指向數組的起始地址,因爲數組名是一個地址。

相關問題