C++使用取消引用的指针填充数组
C++ filling array with dereferenced pointers
根据我在这个问题中发现的,一系列引用是非法的。我对C++有点陌生,并且正在使用指针和取消引用,以下代码似乎执行得很好。
#include <iostream>
#include <cstdlib>
using namespace std;
struct A
{
int data1;
int data2;
A (void) : data1(0), data2(0) {}
// many more datas
};
int main()
{
cout << "test start" << endl;
A *a = new A();
A arr[100];
for (int x=0; x<100; x++) arr[x] = *a;
cout << "test done" << endl;
}
幕后会发生什么? a
对象的副本是否放在array
的每个位置? 如果是这样,当从以下函数返回对象引用时:
A &function (void) { return &A(); }
和这个一样薄吗?
A function (void) {return A();}
对于您的第一个问题,arr[x] = *a;
会导致程序将存储在对象中的所有数据复制到指定的数组元素。
对于您的第二个问题,A &function (void) { return &A(); }
似乎试图返回函数的地址,但格式不正确。 查找"指向函数的指针"以获取更多信息。 但是,您可以这样做:
A test;
A &function(void)
{
return test;
}
A &ref = function();
这样,程序中有一个可以在引用中使用的实际对象,并且函数将地址返回给该对象。 这似乎是您尝试使用该特定功能执行的操作。
编辑:删除了答案的错误部分。 A function(void) { return A(); }
确实会创建一个对象并返回创建的对象。
编辑2:A &function()
年将return &test;
更改为return test;
。
相关文章:
- 使用结构成员指针在C++中填充结构
- 如何使用数据成员填充派生类的对象到基类的指针数组中
- 在循环(C++)中用新指针填充映射
- 用基于范围的for循环填充指针向量
- 内存集不会填充整个指针数组 c++
- 如何填充包含指针数组的结构数组
- 使用指向数组的指针填充动态数组
- 操作员的地址可以启动指针,但填充值是垃圾
- 正确填充炭指针
- C++传递指向未知大小的数组的指针,函数大小并填充它
- 在使用结构体和用函数填充其变量(使用指针)时遇到问题
- 使用来自函数的指针填充结构数组
- 如何在文本文件中逐行读取并填充指向对象数组的指针
- 如何从文本文件中填充指针数组
- 通过指针填充自定义的类 - 与构造函数的麻烦
- 如何使用类实例成员函数指针填充函数指针成员
- 将指针填充到向量的向量会产生奇怪的结果
- 使用指针填充向量时出现分段错误
- 通过返回的指针填充私有字段
- 用指针填充列表 - c++