无效指针长

时间:2018-05-12 07:21:58

标签: c

我正在研究pthread库,我有一个疑问。我希望你能帮助我。

我有一个void *声明为:

void* threadid;

threadid 是一个包含long值的指针。 我的教授告诉我们,如果我想要原始的长值,我可以这样做(假设我们在传递给线程的函数中)

long tid;
tid=(long)threadid;

但是,对我来说, threadid 应该在应用演员之前取消引用,因为它是一个指针。我错了吗?

1 个答案:

答案 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  */