我正在研究pthread库,我有一个疑问。我希望你能帮助我。
我有一个void *声明为:
void* threadid;
threadid 是一个包含long值的指针。 我的教授告诉我们,如果我想要原始的长值,我可以这样做(假设我们在传递给线程的函数中)
long tid;
tid=(long)threadid;
但是,对我来说, threadid 应该在应用演员之前取消引用,因为它是一个指针。我错了吗?
答案 0 :(得分:1)
但是,对我来说,在应用强制转换之前应该取消引用?否。由于无效指针没有像int/char/float
这样的类型,所以你不能直接取消引用它,首先需要类似(long*)threadid
进行类型转换,然后将其取消引用,如*(long*)threadid
。
应该是
long tid;
tid = *(long*)threadid; /* valid, it should be long* bcz threadid is pointer */
低于一个是无效的
tid = (long*)*threadid; /* in-valid bcz threadid is void pointer &
void pointer need to cast first and then dereference */