c++ - 将字符一个一个地分配给指针?
问题描述
我想要一个数组,比如说,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
. 我想我只需要一个二维数组。
解决方案
但不是调用 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]
通过空指针进行间接处理,程序的行为未定义。
在您将指针初始化为指向足够大小的数组(元素)后,显示的代码片段不是“替代”,而是完全有效的。给定示例中的初始化,所有指针都指向同一数组的同一元素。在同一个数组上重复相同的修改是没有意义的。
推荐阅读
- sql-server - 使用 PowerShell 脚本创建具有混合模式身份验证的 SQL VM
- spring - Jdbc 模板和 Spring 的 keyHolder 的 Mockito 测试用例
- javascript - 将 React 组件转换为单个 js 文件以将其与空白 html 集成
- javascript - 反应:我对减速器的编辑状态有一些错误
- java - 微服务中的审计日志
- java - 输入日期 (MM/dd/yyyy) 到字符串
- java - 如何在 android studio 3.1.1 中引入默认的 pdf 开启器选项
- android - 我的应用程序中的 Viewpager Activity 重新启动
- liquibase - 如何在 Liquibase 中生成 SQL 执行日志
- sql - 如何在多维数据集中选择最大日期并存储在 plsql 存储过程的变量中