C ++指针赋值说明

时间:2016-04-21 23:02:39

标签: c++ pointers variable-assignment

例如,有什么区别

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?

我的评论是否正确?

2 个答案:

答案 0 :(得分:0)

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

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

在第三种情况下,您试图取消引用不是指针的内容(*var1)。绝对是一个编译器错误。

答案 1 :(得分:0)

int var1, *ptr;
ptr = &var1; 

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

int var1, *ptr;
ptr = var1; 

var1分配给ptr。这需要演员。

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

var1指向的值指定给ptr指向的值。 (注意,如上所述,它们都是未初始化的指针指向非确定性位置,如果它们存在,则保留未确定的值。)