C++ 指针赋值语句似乎不起作用/做任何事情

标签 c++ pointers variable-assignment

我在模板类(一个简单的 FIFO 队列)中有以下方法,在 GDB 调试时,我发现将指针“previous”重新分配给“current”的语句似乎什么也没做。 执行此语句时,previous 开始为 NULL,current 不为 NULL,但 previous 仍为 NULL。 有没有人见过这样的事情?

inline int search(QueueEntry<T> *current,QueueEntry<T> *previous, unsigned long long t)
{
  while(current && !(current->getItem()->equals(t)))
  {
    previous = current; //**this line doesn't seem to work**
    current = current->getNext();
  }
  if(current)
    return 1;
  return 0;    
}

最佳答案

赋值被编译器优化掉了,因为它对函数的行为没有任何影响。每次循环都重新分配 previous,但不对它做任何其他事情。

错误(如果有的话)在函数的其余部分。

关于C++ 指针赋值语句似乎不起作用/做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6751779/

相关文章:

c++ - std::cin 在不应该接收输入时接收输入

c - 如何将变量分配给c中的绝对地址?

java - 有条件地分配变量以匹配 xslt 模板中的路径

c++ - 为什么我不能像这样: int *p = 6;?直接给int指针赋值

php - 警告 : Assignment in condition

c++ - ROOT 中带有变量的命令

c++ - gcc 和 clang 是否没有正确推断模板别名类型?

c++ - 从主函数中删除在另一个函数中使用 new 创建的一系列对象

c++ - 这段代码中关于 n 在 pc[i] 中的表示是怎么回事

C++ 通过指针实例化