gpt4 book ai didi

c - 指向 C 中数组的指针 : Address Arithmetic and Array Assignment

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:11 24 4
gpt4 key购买 nike

我有以下指向数组变量的指针。

 int (*p)[3];
int a[3] = { 1,2,3 } ;
int b[3] = { 11,22,33 } ;
int c[3] = {111,222,333} ;

我想将这 3 个数组存储到变量 p 中。我必须如何为 p 分配内存以及我应该如何将这 3 个数组存储到 p 中,例如 指针数组。这是否可能...?以及如何..?

注意:

p = (int (*)[])malloc(3);
Now this p is capable of pointing three integer array which size 3 . How i have to assign these a,b,c to this p ?

.

最佳答案

你不需要分配内存,它是在你声明你的指针数组时分配的。每个指针都应该指向已经分配的内存,但是 a, b, c 是自动/静态分配的,所以你不需要担心那个。只需将它们分配给数组 p 的成员即可。

如果p是指向数组的指针,那么代码应该是:

int **p = malloc(sizeof(int*)*3);
...
p[0] = a; p[1] = b; p[2] = c;
...
free(p); /* when done*/

声明 int *p[3] 创建指针数组,而不是指向数组的指针。

编辑

如果你想要一个指向数组的指针,那么你可以这样做:

int a[3];
int *p = a;

不要忘记 - 您可以单独使用 a 作为指向它所代表的数组的指针,在需要的地方,您不需要单独的变量。

关于c - 指向 C 中数组的指针 : Address Arithmetic and Array Assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6909493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com