繁体   English   中英

为什么我不能引用以前转换为void的字符串中的字符?

[英]Why can't I reference a character in a string that was previously cast to void?

要使用pthread,我将char *用作输入,并将其转换为void *作为输入。 如果以后将其转换为(char *),则可以正常打印并使用((char *)var)。 但是,如果使用(char *)var [i],则“ i”将帮助我们引用一个字符,但不是。 为什么?

例如,MS说“表达式必须是指向完整对象类型的指针”。

由于运算符优先级:强制转换位于下标运算符之后。

您必须编写((char*)var)[i];

在这种情况下,强制类型转换的优先级低于数组索引的优先级。 相反,您必须执行类似*((char *)var + i) ,但是最清晰的方法可能是将其分配给临时对象:

 char *str = var;
 printf("%c", str[i]);

尝试(char *) &var[i] ,但这只是从var[i]获得引用。 您不能执行(char *) var[i]因为它实际上试图将char to (char *)转换char to (char *)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM