C++使用指针创建数组
C++ Creating an Array using Pointers
我目前正在学习C++,很抱歉我看起来有点傻。
我目前坚持的练习要求我编写一个函数IndexArray(int n(,该函数返回一个指向动态分配的整数数组的指针,该数组包含n个元素,每个元素都初始化为自己的索引。(从工作表中复制(。
我已经读了好几遍了,还不完全理解,但他们举了一个例子:
假设intPtr被声明为
int *intPtr;
报表
intPtr = IndexArray(10);
应该生成以下内存配置:
intPtr -> 0 1 2 3 4 5 6 7 8 9
从这个例子中,我猜我的函数需要创建一个大小为n的数组,值从0到n-1,然后另一个指针需要指向该数组。
这是他们的测试代码:
int *values1;
values1 = IndexArray(10);
我知道如何轻松创建数组,但我对指针的理解还不够,不知道该怎么做
int *IndexArray(int n) {
cout << n << endl;
int arrayTemp[n];
for(int i = 0; i < n; i++) {
arrayTemp[i] = i;
}
return arrayTemp;
}
然而,在测试时,values1数组不包含0-9之间的值(尽管arrayTemp在返回之前就包含了(。
任何帮助都将是惊人的,希望我已经给了你需要帮助的一切。谢谢!:D
int arrayTemp[n];
请注意,该语句在函数中,因此当函数终止时,arrayTemp[]将不再可用,它可以被删除:它是一个#local#变量!
所以,如果你想这样做,你可以使用:
int * arrayTemp = new int[n];
注意:您必须删除它以避免内存泄漏。
您不能这样做:
int *IndexArray(int n) {
cout << n << endl;
int arrayTemp[n]; //declare a local array
for(int i = 0; i < n; i++) {
arrayTemp[i] = i;
}
return arrayTemp; //return a pointer to a local
}
不能返回指向本地的指针。一旦你回来,当地人就不复存在了。指针现在指向垃圾
相反,您必须使用malloc
(C或C++(或new
(C++(为10 int动态创建存储,并且由于这是在堆上动态创建的,因此它在返回后将保持不变(如果是malloc
ed,则需要为free
d;如果是用new
创建的数组,则需要delete[]
d。对于用new
创建的单个对象,您只需使用delete
(
相关文章:
- 在将 new 与指针一起使用时,创建数组的指定长度
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 合并排序不排序自创建数组类 c++
- 基于参数创建数组
- 使用new创建数组而不声明大小
- c++用输入数据创建数组
- 从类 c++ 动态创建数组
- 如何使用 void 函数从类创建数组
- 未知大小的数组作为类成员,用于在运行时(对象创建时间)创建数组的对象
- 如何在不知道Arduino中知道其大小的情况下创建数组和存储值
- 使用动态分配创建数组并将元素插入其中
- 是否可以使用C 函数中的const int参数创建数组
- 如何在C++函数中创建数组
- 使用 ::std::vector 创建数组
- 在编译时以增量方式创建数组
- Numpy C API - 使用 PyArray_Descr 创建数组会导致段错误
- 为什么当我尝试在类中创建数组时"invalid use of non-static data member"我会收到错误?
- 取消引用指针以创建数组的副本
- C++ 在堆上创建数组而不对其进行初始化
- 数组的维度是在创建数组的那一刻确定的,以后不能更改的,这是真的吗?