c++ - 在 C++ 中玩指针
问题描述
我一直在玩指针,为了了解如何使用,我尝试了:
baz + sizeof(char)
并且代码工作正常,我得到了正确的值,我不明白为什么。
我期望能够正常工作:
baz + sizeof(Rectangle)
但是当我使用它时会得到一个随机数。baz[1:0] 数组是如何组织的?它不应该是“矩形”对象的数组吗?
#include <iostream>
using namespace std;
class Rectangle
{
int width, height;
public:
Rectangle (int x, int y): width(x), height(y) {}
int area ()
{
return width * height;
}
};
int main(int argc, const char * argv[])
{
Rectangle obj (10,4);
Rectangle *foo, *bar, *baz;
foo = &obj;
bar = new Rectangle (5,6);
baz = new Rectangle[2] { {2,5}, {1,2}} ;
cout << "obj area: " << obj.area() << endl;
cout << "foo area: " << foo -> area() << endl;
cout << "bar area: " << (*bar).area() << endl;
cout << "bar area: " << bar -> area() << endl;
cout << "baz[0] area: " << baz[0].area() << endl;
cout << "baz[1] area: " << (baz + sizeof(char)) -> area() << endl;
}
解决方案
推荐阅读
- r - 预测数据帧中的行数不等于馈送到预测函数的新数据帧中的行数
- java - 如何在运行时将字符串解析为 Java 代码并运行它以获得简单的表达式,而不会产生安全问题?
- arrays - 如何在 C 中更改字符串?
- mysql - Calcite Optimize 导致重复的列名错误
- java - 如果另一个文本框已被填充,则需要将光标移动到特定文本框
- linker - libmicrohttpd:链接时未定义对“pthread_setname_np@GLIBC_2.12”的引用
- python - 数据框中的 2 个虚拟变量
- sql - Sql 数据库设计层次结构
- cordova - cordova 支持 OS X 的 localStorage 吗?
- html - eclipse标签位置无效(ol)警告