怎么动态分配指针数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么动态分配指针数组相关的知识,希望对你有一定的参考价值。

我知道怎么动态分配数组,但是分配动态指针数组怎么弄呢?
给个样例出来吧,谢谢了

动态分配指针数组和动态分配数组是一样的:

动态分配整型指针数组,大小为10
C:
int** pp = (int**)malloc(sizeof(int*)*10);

C++:
int** pp = new int*[10];

******************************************
使用C\C++:
/*将指针数组中所有元素赋值为变量a的地址*/
int i = 0, a = 100;
for(i = 0; i < 10; i++)

/* 每个pp[i]都是一个int*类型 */
pp[i] = &a;


******************************************
销毁
C:
free(pp);

C++:
delete[] pp;
参考技术A 指针数组是指数组中的元素都为指针的数组。
所以动态分配指针数组和动态分配数组的方法是一样的。
比如:
分配整型指针数组
int num=5;
int * * array;
array=new int*[num];
int a[5]=1,2,3,4,5;
for(int i=0;i<5;i++)
array[i]=a+i;
cout<<*(array[i]);

delete []array;

注:vc编译通过。
参考技术B 指针数组是指数组中的元素都为指针的数组。
所以动态分配指针数组和动态分配数组的方法是一样的。
比如:
分配整型指针数组
int
num=5;
int
*
*
array;
array=new
int*[num];
int
a[5]=1,2,3,4,5;
for(int
i=0;i<5;i++)
array[i]=a+i;
cout<<*(array[i]);

delete
[]array;
注:vc编译通过。
参考技术C 首先,你使用char
**p=new
char*[n];假设n=2,
说明你申请了2个4个字节的内存,用于储存两个指针。
但是你cin>>*(p+i);说明你是想给你之前分配的指针指向的内容赋值,但是你并没有为你之前申请的指针申请内存。能明白我的意思么?
你可以改成
char
**p=new
char*[n];
for(i=0;i
评论
0
0
加载更多

动态分配指针数组

【中文标题】动态分配指针数组【英文标题】:Dynamically allocating an array of pointers 【发布时间】:2020-06-27 17:56:02 【问题描述】:

最后一行代码如何?

int size;

    cin >> size;

    int** arr = new int* [size];

我对代码的“int**”部分最不清楚。有人可以分解一下吗?

谢谢!

【问题讨论】:

int* arr = new int[size] 分配ints 数组的方式相同。只是你有int*,而不是int 【参考方案1】:
int   a; // a is an int
int  *a; // a is a pointer to an int
int **a; // a is a pointer to a pointer to an int 

您可以将int* 指向int 的数组,如下所示:

int *a = new int[42];  // allocates memory for 42 ints

完全一样,你可以让int**指向int*的数组,像这样:

int **a = new int* [42];  // allocates memory for 42 int*

请注意,该数组中的每个指针都需要分配自己的内存,否则您只有一个由 42 个指针组成的数组,其中没有一个指向有效内存。

【讨论】:

我明白了……所以,“int** a;”是指向“int 指针”的指针,其中该指针 (int** a) 用于为原始“int* a”动态分配内存,这就是 'new int* [size] 部分代码呢?我理解正确吗? 是的,我想你已经明白了。不过,我很乐意澄清您是否需要。 @AKidNamedCoder 没问题。如果回答您的问题,请考虑 accepting 的答案。【参考方案2】:

它是一个双指针 int 变量。正如我从代码中看到的那样。它存储指针 int* 的地址

【讨论】:

【参考方案3】:

创建动态数组 语法是: data_type * name_of_array = 新的 data_type [大小] 您可以根据需要将大小设置为变量或值。

【讨论】:

是的,我在提到基本数据类型时理解这一点,但我特意问的是它如何用于指针数组。【参考方案4】:

这样想:

要分配一个数组,你可以使用 类型 *_var = 新类型[大小]

但是你希望你的类型是指向 int 的指针,所以: int* *arr = new (int*)[size]

【讨论】:

错字:type vs _type

以上是关于怎么动态分配指针数组的主要内容,如果未能解决你的问题,请参考以下文章

如何得到指针指向的数组的长度

如何使用 C++ 中的指针动态分配和解除分配二维数组?

指向对象的指针数组的动态分配

指针数组的动态内存分配

动态分配指针数组

尝试使用动态内存分配创建节点指针数组