我有一个参数中有两个指针的函数。第一个指针(Position *x)指向具有值的结构,第二个指针没有指向任何内容(Position *y)(尚未初始化)。我尝试将第一个指针复制到第二个指针,然后打印第二个指针中的值,但它不起作用。我不明白。这是否意味着您可以更改指针的值,但不能更改其地址,因为实际上 C 语言总是按值工作(我的意思是在参数传输中)?
void waitDeplacement(Position *oldPosition, Position *newPosition, Sens *sens, Niveau *niveau)
{ ...
newPosition = oldPosition;
printf("NEW POSITION x:%d / y:%d\n", newPosition->x, newPosition->y);
...
}
此外,当我使用深层复制时:
*newPosition = *oldPosition;
它有效。那么为什么呢?
最佳答案
c 中可以进行指针复制。但对于常量指针,复制是不允许的。行
newPosition = oldPosition;
仅当 newPosition 不是常量指针时才有效。
当你执行newposition = oldPosition;
时,newPosition和oldPosition将指向内存的同一位置。
请显示您的代码,这将有助于更好地理解问题。
关于将指针复制到指针在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320563/