我有指向数组变量的指针。
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);
现在这个p能够指向三个 整数数组,大小为3。我如何分配这些a,b,c p?
。
答案 0 :(得分:1)
您不需要分配内存,在声明指针数组时会分配内存。每个指针都应指向已分配的内存,但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
作为指向它所代表的数组的指针,如果需要,您不需要单独的变量。
答案 1 :(得分:0)
int* p[3];
int a[3] = { 1,2,3 } ;
int b[3] = { 11,22,33 } ;
int c[3] = { 111,222,333} ;
p[0] = a;
p[1] = b;
p[2] = c;
就是这样。
修改1
指向数组的指针?
int** p;
int a[3] = { 1,2,3 } ;
//...
p = &a;
修改2
指向int数组的指针数组:
int** p[3];
int a[3] = { 1,2,3 } ;
//...
p[0] = &a;
//...