未使用计算出的值
如何解决此问题?为什么编译器声称它是否在另一个代码部分中使用变量?未使用计算出的值
void replace(char ** src, const char s, const char replace) {
while(*(*src) != '\0') {
if(* (*src) == s) {
news[size] = replace;
} else {
news[size] = *(*src);
}
*(*src) ++; // the error line
size++;
}
*src = news;
}
当你做*(*src)++
你基本上提领src
,然后做上的指针后缀增量,然后取消引用指针。这是一个错误。你没有使用最终值,这就是编译器警告你的原因。
你真正想要的是(**src)++
;即解除引用两次然后递增。
Postfix'++'和'*'do ** not **具有相同的优先级,但前缀'++'和'*'可以。不过,他们的*优先权在这里并没有改变你的推理。 – 2012-03-11 22:11:43
@AndrewMarshall谢谢,我的坏话。我现在更新了它。 – Manish 2012-03-11 22:25:07
双引用非常混乱;你应该简化指针:
char *srcp = *src; // Or whatever type it is.
while (*srcp != '\0')
{
if (*srcp == s)
{
news[size] = replace;
}
else
{
news[size] = *srcp;
}
srcp++;
size++;
}
编译器上的特定标志不允许你在不使用它的情况下去变量变量(分配给它)问题在于你在不使用它的值的情况下删除指针。解决它的方法如下:
如果你试图递增指针只是这样做:
(* SRC)=(* SRC)+ 1;
如果你想增加的终值,这样做:
(** SRC)=(** SRC)+ 1;
你得到的实际错误是什么? – 2012-03-11 21:57:07
@AndrewMarshall:添加完整的代码。 – Jack 2012-03-11 21:57:32
@Jack:但不是错误消息...你正在增加值,而不是指针。一个'char **'被解除引用两次是一个'char'。 – 2012-03-11 22:00:38