C 增加复制的指针是否也会增加原始指针?

C 增加复制的指针是否也会增加原始指针?,c,pointers,C,Pointers,在C中,如果您有类似的内容: int obj = 5; int * ptr = &obj; int * ptr2 = ptr; ptr2++; ptr也是增加的,还是仅仅是ptr2?我想我想说的是,如果从主指针分配第二个指针,然后执行函数操作,这是一个很好的方法,而不会弄乱第一个指针的位置。这是一个我正在编辑几个函数的项目。我可以访问指向对象的指针,但不能访问对象本身。您只更改了ptr2的值ptr仍保留地址到obj第一个指针(ptr)将不受影响,因为您正在将第二个ptr(ptr2)设置

在C中,如果您有类似的内容:

int obj = 5;
int * ptr = &obj;
int * ptr2 = ptr;
ptr2++;

ptr也是增加的,还是仅仅是ptr2?我想我想说的是,如果从主指针分配第二个指针,然后执行函数操作,这是一个很好的方法,而不会弄乱第一个指针的位置。这是一个我正在编辑几个函数的项目。我可以访问指向对象的指针,但不能访问对象本身。

您只更改了
ptr2
的值
ptr
仍保留地址到
obj
第一个指针(
ptr
)将不受影响,因为您正在将第二个ptr(
ptr2
)设置为具有第一个(
ptr
)的值(
&obj
),就像您具有以下代码一样:

int a = 1;
int b = a;
b++;

只有
b
会增加,而不是
a

如果复制一张纸并烧掉副本,那么原件会永远丢失吗

当然不是


  • 如果我们在C中讨论指针或其他对象,上述内容不会改变
  • 虽然创建一个指向一个对象的指针是可以的,但这可能不是您想要做的
  • 很自然地,将指针复制到对象不会对对象产生影响,它不会被复制
  • 另外,不管您使用哪个指针指向某个对象,它们都会以相同的方式看到它(当然,如果它们具有相同的类型)

这是今天第三次有人在我获得第一个赞成票(同一问题的所有答案中)后不久就否决了我的一个答案。它是一种流行病吗?如果指向的对象是一个数组,这是否成立?第二个指针是否知道移动到第二个数组元素?@Coder4Lyfe是的,只要指针类型正确。在指针上执行算术与在其他类型上不同,因为指针将以其指向的类型的大小为单位进行更改。因此,在您的示例中,操作
ptr2++
将导致
ptr2
的值增加4(假设4字节整数)。如果它是一个
char*
,它将增加1,因为
char
的大小是1字节。有关这方面的更多信息,请参阅Google上的第一个结果(搜索:“C中的指针算术”):