簡體   English   中英

為什么空指針會給出與其所指向的地址不同的地址?

[英]Why void pointer would give different address than the one it is pointing to?

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int *pi = NULL;
    void *voidptr = pi;
    int num = 100;
    pi = &num;

    printf("%p\n",pi);
    printf("%p\n", voidptr);
    return 0;
}

為什么第二個printf給出0x0但與第一個不一樣的地址?

因為分配給一個對象不會影響C中的另一個對象,並且因為將pi (當時的值為NULL )分配給voidptr所以不會更新voidptr

順便說一句,您通過將類型錯誤的數據傳遞給printf()來調用未定義的行為 :您傳遞了int*%p期望void*

暫無
暫無

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

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