片段将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