[英]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.