今天,我有一個關於考試用C ponters,並有大約兩倍指針的一些問題,其中使用奇怪的指針初始化
*pointer = &variable;
以下語法,我不知道我是否已經正確,但可有人解釋指針指向哪裏以及變量中的值將如何改變?起初我認爲它會導致sntax錯誤,但在測試中沒有這樣的答案。由於事先
今天,我有一個關於考試用C ponters,並有大約兩倍指針的一些問題,其中使用奇怪的指針初始化
*pointer = &variable;
以下語法,我不知道我是否已經正確,但可有人解釋指針指向哪裏以及變量中的值將如何改變?起初我認爲它會導致sntax錯誤,但在測試中沒有這樣的答案。由於事先
如果指針被初始化這種方式:
int *pointer;
int variable = 10;
pointer = malloc(sizeof(int));
*pointer = &variable;
*pointer = &variable
意味着變量的地址被設置爲指針對象的值。由於*pointer
正在取消引用,所以您基本上存儲的值不會設置引用。
所以後來例如,如果變量的地址類似於(0x100),則該值將被存儲,並且指針將指向它。我理解正確嗎? –
這就是如果指針在賦值之前正確初始化。 – dpp
嗯,我想我現在明白了,謝謝:) –
pointer
是一個指針的指針。 例如,
int var1=42;
int* intptr;
int** ptr2intPtr;
ptr2intptr = &intptr;
//Syntax in question.
*ptr2intptr = &var1;
//Just like *intptr is same as var1, *ptr2intptr is same as intptr
//so the above line will be equivalent to intptr = &var1
//All the three are the same
printf("%d",**ptr2intptr);
printf("%d",*intptr);
printf("%d",var1);
謝謝。我做了正確的選擇,而做測試:) –
// two int variables.
int var1;
int var2;
// int pointer pointing to var1
int *ptr = &var1;
// pointer to int pointer..pointing to ptr
int **ptr_to_ptr = &ptr;
// now lets make the pointer pointed to by ptr_to_ptr
// point to var2
*ptr_to_ptr = &var2;
// or alternatively you can do:
// ptr = &var2;
嗯,現在它對我有意義:)謝謝 –
被它也是在同一行中聲明? –
@ MahmoudAl-Qudsi我對此表示懷疑。 – dpp
@dpp這將使它成爲一個簡單的指針,而不是兩個間接級別。對初學者更有意義。 –