将指针复制到指针在 C 中不起作用

标签 c

我有一个参数中有两个指针的函数。第一个指针(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/

相关文章:

c - linux 内存管理 - 如何获得 "Random xxx offset"?

c - 小端和大端

c - 实现域名系统

c - 管理时间表 C 中的重复事件

与 realpath() 缓冲区混淆

c - 客户端/服务器中的 write()/read(),C 中的 pthread 应用程序在非主线程上总是返回 -1?

c++ - 数组中的空空格无法识别 C++ C

C ArrayList 崩溃

c - c中的序列点

c - 为什么循环值永远不会大于0?