首页 > 解决方案 > 将字符一个一个地分配给指针?

问题描述

我想要一个数组,比如说,10 个指向字符数组的指针。为了简单起见,让它们都指向同一个字符数组。这是一种方法:

const int N = 10;
char arr[] = {'a', 'b', 'c', '\0'};
char *pArr[N] = {NULL};
for (int i = 0; i < N; i++)
     pArr[i] = &arr[0];

我可以一个一个地分配字符pArr[i] = &arr[0],而不是调用?就像是:

for (int i = 0; i < N; i++)
     for (int j = 0; j < 3; j++)
          pArr[i][j] = arr[j];

除了这个代码段错误。分配的右侧是否必须是地址?

编辑:我希望能够删除arr但不丢失pArr. 我想我只需要一个二维数组。

标签: c++arrayspointerssegmentation-faultc-strings

解决方案


但不是调用 pArr[i] = &arr[0],我可以一个一个地分配字符吗?就像是:

for (int i = 0; i < N; i++)
{
     for (int j = 0; j < 3; j++)
     {
          pArr[i][j] = arr[j];
     }
}

如果pArr[i]为空,则pArr[i][j] = arr[j]通过空指针进行间接处理,程序的行为未定义。

在您将指针初始化为指向足够大小的数组(元素),显示的代码片段不是“替代”,而是完全有效的。给定示例中的初始化,所有指针都指向同一数组的同一元素。在同一个数组上重复相同的修改是没有意义的。


推荐阅读