[英]C Programming printing pointers
我有這么一段代碼:
printf("Address for ptr_one %p\n", &ptr_one);
printf("Non-Address for ptr_one %p\n", ptr_one);
printf("value for ptr_one %p\n\n", *ptr_one);
輸出:
Address for ptr_one 0xffffcbd8
Non-Address for ptr_one 0x600042b26
value for ptr_one 0x19
據我了解,第一行是指針地址,第三行是該地址處的值。 但是第二行打印出來的究竟是什么?
它被初始化為:
int *ptr_one = (int *)malloc(sizeof(int));
*ptr_one = 25;
編輯:添加初始化代碼
看起來您的代碼如下:
int one = 0x19;
int *ptr_one = &one;
(您已經編輯了代碼以顯示實際情況,但它在功能上與我上面顯示的相同(無論如何在內存和內存指針方面),因此我不需要更改它)。
那么你所擁有的是:
(ptr_one "variable")
|
V
+---------------+ +-----------+
| ptr_one value | --> | one value |
+---------------+ +-----------+
有以下說明:
ptr_one
變量的地址,它存儲在內存中。ptr_one
變量的值,它也是one
變量的地址。one
變量的值。第一行是指針的內存地址,第二行是指針指向的地址,第三行是該地址的第一個值。
你的例子有點簡潔,沒有提到ptr_one
的類型。 假設你有
int x=10;
int *ptr_one=&x;
然后
printf("Address for ptr_one %p\n", &ptr_one);
打印指針的地址,即ptr_one
printf("ptr_one %p\n", ptr_one);
打印x
的地址( ptr_one
是一個指針。)
printf("ptr_one points to %p\n\n", *ptr_one);
打印x
的值(在這里您取消引用指針以獲取存儲在其中的值)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.