[英]Why the function pointer pointing to different function works than it is defined
[英]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 = #
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.