c++ - 为动态分配的指针数组的所有元素赋值?
问题描述
我有一个ptrArr1
包含两个元素的指针数组 ( )。我希望动态分配指针数组。我可以很好地为指针数组的第一个元素分配地址,但我不知道如何为指针数组的第二个元素分配地址。我不希望使用任何 STL 或其他预编码函数。我正在做这个练习来增强我对指针的理解。谢谢你。
int main()
{
int one = 1;
int two = 2;
int *ptrArr1 = new int[2];
ptrArr1 = &one;
ptrArr1[1] = &two; //does not work
ptrArr1 + 1 = &two; // does not work
delete[]ptrArr1;
return 0;
}
解决方案
整数数组和指向 的指针数组是有区别的int
。在您的情况下ptrArr1
,是一个指向整数数组的指针,其中包含两个整数的空间。因此,您只能分配int
到ptrArr1[1] = 2
但不能分配地址。相比
int xs[] = { 1, 2, 3 }; // an array of integers
int y0 = 42;
int *ys[] = { &y0, &y0 }; // an array of pointers to integers
现在你也可以有指向xs
resp 的第一个元素的指针。ys
:
int *ptr_xs = &xs[0];
int **ptr_ys = &ys[0];
// which can be simplified to:
int *ptr_xs = xs;
int **ptr_ys = ys;
对于简化步骤,您应该研究什么是数组衰减?
推荐阅读
- android - 创建了 android 目录但通过 PC USB 连接不可见
- python-3.x - 仅当超级文件夹中存在重复项时才从本地文件导入函数
- mysql - 尝试将 1.5M 记录从 mysql 索引到 Elasticsearch,但出现 jdbc java heap 错误。记不清
- c# - 注册为“作用域”或“瞬态”的 Dbcontext 是否影响关闭数据库连接
- sql - 在 DB2 SQL 中获取上一个值/下一个值
- apache-flink - Flink SQL Match_Recognize 给出不完整的结果
- java - 存储库从 PostgreSQL 数据库返回空列表
- python - 当我尝试从 python 运行 shell 'sed' 命令时出现错误
- django - 如何解决测试中的 Django hstore 错误
- pytest - 在 pytest 中收集时使用固定装置