簡體   English   中英

C 編程打印指針

[英]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 0xffffcbd8的地址是實際ptr_one變量的地址,它存儲在內存中。
  • Non-Address for ptr_one 0x600042b26ptr_one變量的,它也是one變量的地址
  • ptr_one 0x19的值是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的值(在這里您取消引用指針以獲取存儲在其中的值)

ptr_one是地址位置0xffffcbd8 中的一個整數指針。 目前它指向一個地址0x600042b26 在地址0x600042b26 中,我們有值 25。

此鏈接顯示了如何在內存中分配ptr_one

希望這提供了答案..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM