c++ - 关于指针作为数组的一些疑问?

标签 c++ arrays pointers

我是 C++ 的初学者,我想使用动态内存分配技术而不是静态(如数组) 例如我想制作一维数组 整数a[100]; 我应该如何对指针做同样的事情? 我基本上感到困惑的是,我浏览了互联网上的一些教程,他们这样做了

int a[100];
int *arr = &a[0]; 

我发现它毫无用处,因为首先我们声明数组 a 的大小为 100,然后我们再次使用 arr 指针 我可以这样做吗

int a[1]; 
int *arr= &a[0];

现在如果我为 arr[i] 分配随机值(从 i=0 到 i= 用户定义) 它会接受超出 i=1 的情况

最佳答案

will it accept it beyond i=1

不,它是 UB,因为您正在尝试访问根本没有分配的内存。

你可能想要

int* a = new int[user_define_value];
// use it from a[0] ~ a[user_define_value - 1]
delete[] a;

顺便说一句:了解 std::vector 是个好主意。如果你想使用动态大小数组,和 std::array用于 C++ 中的静态大小数组。

关于c++ - 关于指针作为数组的一些疑问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36613223/

相关文章:

c++ - 如何释放线程本地存储的堆内存

c++ - 从标准输出(C++)获取信息?

java - 解析在 Java 中通过 TCP 发送的字节数组

ios - 如何从 NSDictionary 的 NSArray 的 NSArray 迭代和检索值

c++ - 映射迭代器与运算符不匹配

c++ - vector 迭代器不可取消引用,同时尝试从文件中读取

reactjs - 如何从 api 获取数据并将其作为原始数据显示在前端?

pointers - 通过 `mem::transmute()` 指针存储泛型

C - 移动链表中的节点

c - 如何在C中释放三维指针内存