C++指针分配说明
C++ Pointer Assignment Clarification
例如,当我有
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
指向的值。(请注意,如前所述,它们都指向非确定性位置,如果它们存在,则包含不确定的值。
相关文章:
- 将数组的地址分配给变量并删除
- vector.resize()中的分配错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 函数中堆分配的效果与缺少堆分配的情况
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 获取字符串的长度并将其分配给数组
- 将地址分配给本地指针后,公共对象的变量将消失
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 我在二维向量中是否正确分配了内存
- 正在尝试重载二进制搜索树分配运算符
- 当使用通配符和null指针调用函数时,对输出的说明
- GlobalAlloc而不是其他分配方法
- C++指针分配说明
- 分配运算符实现的说明
- 指针分配说明
- 正在复制分配增压选项_说明
- 动态分配的内存存储说明