C++指针分配说明

C++ Pointer Assignment Clarification

本文关键字:说明 分配 指针 C++      更新时间:2023-10-16

例如,当我有

int var1, *ptr;
ptr = &var1; // the pointer ptr copies the address of var1, hence ptr points to var1?
int var1, *ptr;
ptr = var1; // ptr points to var1, but does not have the address of var1, so can not change the value of address var1? 
int *var1, *ptr;
*ptr = *var1; // copy value of var1 into the location pointed to by ptr?

我的评论正确吗?

第二个(ptr = var1)和第三个(*ptr = *var1)选项是错误的。

在第二种情况下,您要求ptr指向用var1书写的地址。 var1整数值将被解释为地址。可能不是您想要的,并且会导致编译器错误或警告。

在第三种情况下,您尝试取消引用不是指针(*var1)的东西。绝对是编译器错误。

int var1, *ptr;
ptr = &var1; 

获取 int 变量的地址var1,并将该地址分配给变量ptr

int var1, *ptr;
ptr = var1; 

var1 的值分配给 ptr 。这需要演员阵容。

int *var1, *ptr;
*ptr = *var1; 

var1 指向的值分配给 ptr 指向的值。(请注意,如前所述,它们都指向非确定性位置,如果它们存在,则包含不确定的值。