片段將id
的值傳遞給採用普通void *
結構的例程。我很困惑爲什麼它的工作原理:爲什麼你可以投long
到void*
並投下回long
。通過指針將值傳遞給void
特別是,我在想如果你想通過指針傳遞,那麼你應該把變量的地址如&id
傳遞給test()
函數。
#include <stdio.h>
void test(void * id) {
long myid;
myid = (long) id;
printf("my id is %ld\n", myid);
}
int main() {
long id = 5;
test((void *)id);
}
這不是打印'foo'值的正確方法。使用'printf(「%p」,(void *)foo);/*更好* /'或'printf(「%ld」,(long)foo);/*更糟* /' – user694733
指針不是「只是數字」。着名的8086「遠」指針是_兩個數字。 (段/偏移) – MSalters