回答
* p是指向一個int等於5
** P是一個指向指針的指針,它是一個包含一個地址的變量。
指針是一個包含地址的變量。在你的電腦中,每個變量都存儲在內存中的某個地方。變量放置的確切位置稱爲變量地址。
用指針可以知道另一個變量的確切地址。
例
int c = 5; // this value of this int is stored at a certain address;
int *p = &c; // the pointer p now contains the address where 5
請記住,* P是可變太,因此在某處存儲在存儲器中爲好。
int **P = &p ; // a double pointer that contains the address of the pointer p
這將是一個新的指針,指向存儲p的地址(不是變量c!) - 一個指針;
你能告訴我什麼是指向一個指針嗎?...它是一個地址的新地址 –
感謝您的提示! 剛剛編輯我的答案;) – Eduard6421
單個星號代表一個指針,而雙星號代表一個指向指針的指針。
* p是int的地址,等於5.所以在內存的某個地方,有一個int等於5,那個指針指向那個int的那個地址。
** p是內存中指針的地址。所以想想看,我們有一個指向上面int的指針,但現在最重要的是,我們有另一個指針指向int的指針。另一種考慮它的方法是我們有一個用於int的另一個地址的地址。
好的謝謝.....所以如果我們有指針** A和A = 5,那麼我們必須寫&A來獲得該值? –
實際上,當我們在變量前面使用&時,這隻會給我們地址。爲了取消引用指針,我們必須使用*仍然這樣做,但是一旦這樣做仍然會給我們指針(地址)。我們將不得不再次解除引用,但這不是我們如何使用雙指針。 通常情況下,我們使用雙指針將正則指針傳遞給函數,所以我們保留真指針,因爲否則就會複製它。這使我們能夠使用該指針而不會丟失原始指針。我會在一秒內發佈一個鏈接以顯示我的意思。 –
好吧,這有一個簡單的方法來解釋雙指針及其用法:[link](https://stackoverflow.com/questions/5580761/why-use-double-pointer-or-why-use-pointers-to-pointers ) –
- 1. 這兩個指針代碼有什麼區別
- 2. 這兩個Coffeescript有什麼區別?
- 3. 這兩個定義有什麼區別?
- 4. 這兩個聲明有什麼區別?
- 5. 這兩個數組有什麼區別?
- 6. 這兩個代碼有什麼區別
- 7. 這兩個陳述有什麼區別?
- 8. 這兩個陳述有什麼區別?
- 9. 這兩個聲明有什麼區別?
- 10. 這兩個查詢有什麼區別?
- 11. 這兩個代碼有什麼區別
- 12. 這兩個按鈕有什麼區別?
- 13. 這兩個查詢有什麼區別?
- 14. 這兩個....之間有什麼區別?
- 15. 這兩個聲明有什麼區別?
- 16. 這兩個陳述有什麼區別?
- 17. 這兩個聲明有什麼區別?
- 18. 這兩個文件有什麼區別?
- 19. 這兩個ViewController Pushes有什麼區別?
- 20. 什麼區別=指針
- 21. 這兩個涉及指針算術的語句有什麼區別?
- 22. 在C++中這兩個「指針刪除」操作有什麼區別?
- 23. 這兩個指令在性能上有什麼區別嗎?
- 24. 這些指針的使用有什麼區別?
- 25. 這些指針解引用有什麼區別
- 26. C:指針=變量和指針=變量有什麼區別?
- 27. 常量指針和整型常量指針有什麼區別?
- 28. 這兩種語法有什麼區別?
- 29. 這兩種方法有什麼區別
- 30. 這兩種功能有什麼區別?
你用'p'小寫和'P'大寫?是的,這是可讀的,不會令人困惑... – bolov
如果你想聲明一個指向一個int值爲5的變量,你應該寫'int x = 5; int * px =&x;'。然後,您可以使用正確的格式說明符printf(「%p」,px);'來打印該內存地址。 –
對於'int * p = 5',你聲明一個類型爲'int *'的變量'p'(或者指向int的指針),並且爲p賦予內存地址'5',不管它包含什麼(可能不是int)一個int值爲5的變量的地址。這是一個[bad idea](https://ideone.com/2H0adX)。 –