例如,有什么区别
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?
我的评论是否正确?
答案 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
指向的值。 (注意,如上所述,它们都是未初始化的指针指向非确定性位置,如果它们存在,则保留未确定的值。)