请问C语言中**a[9]是什么意思呢?
**应该表示2维指针,那**a[9]表示什么呢?它能用来表示一个三维数组a吗??a有9行,其中每行为一个二维数组。...
**应该表示2维指针,那**a[9]表示什么呢?
它能用来表示一个三维数组a吗??a有9行,其中每行为一个二维数组。 展开
它能用来表示一个三维数组a吗??a有9行,其中每行为一个二维数组。 展开
3个回答
展开全部
"**应该表示2维指针" -- 不叫二维指针,而叫二重指针,就是指针的指针。
**a[9] -- 这是一个 二重指针数组。数组有9个单元,可以指向9个 二重指针。
用它来表示一个三维数组,比较复杂,在作为三维数组使用前,须要分配它的存储单元,看下面程序。
程序第一部分,**p[9] 作为二重指针数组。第二部分,变成p[3][2][9]三维数组.
#include <stdio.h>
#include <stdlib.h>
main()
{
int a=1,b=2,c=3;
int *aa,*bb,*cc; // 指针
int **aaa,**bbb,**ccc; // 二重指针
int **p[9],i,j,k;
aa=&a; bb=&b; cc = &c; // 赋地址
aaa = &aa; bbb=&bb; ccc = &cc; // 赋地址
p[0] = aaa; p[1] = bbb; p[2] = ccc; // 赋地址
p[6] = aaa; p[7] = bbb; p[8] = ccc; // 赋地址
printf("%d %d %d\n", **p[0], **p[1], **p[2]); // 打印值
printf("%d %d %d\n\n", **p[6], **p[7], **p[8]); // 打印值
// 第二部分 分配 指针 指向的单元
for ( i=0;i<9;i++) p[i] = (int **) malloc(sizeof(int *) * 2);
for (j=0;j<2;j++) {
for ( i=0;i<9;i++){
p[j][i] = (int *) malloc(sizeof(int) * 3);
}
};
// 赋值 1,2,3,4。。。54 并打印值
for (i=0;i<3;i++) for (j=0;j<2;j++) for (k=0;k<9;k++) { p[i][j][k] = a; a++;};
for (i=0;i<3;i++) for (j=0;j<2;j++) for (k=0;k<9;k++) printf("%d\n",p[i][j][k] );
}
**a[9] -- 这是一个 二重指针数组。数组有9个单元,可以指向9个 二重指针。
用它来表示一个三维数组,比较复杂,在作为三维数组使用前,须要分配它的存储单元,看下面程序。
程序第一部分,**p[9] 作为二重指针数组。第二部分,变成p[3][2][9]三维数组.
#include <stdio.h>
#include <stdlib.h>
main()
{
int a=1,b=2,c=3;
int *aa,*bb,*cc; // 指针
int **aaa,**bbb,**ccc; // 二重指针
int **p[9],i,j,k;
aa=&a; bb=&b; cc = &c; // 赋地址
aaa = &aa; bbb=&bb; ccc = &cc; // 赋地址
p[0] = aaa; p[1] = bbb; p[2] = ccc; // 赋地址
p[6] = aaa; p[7] = bbb; p[8] = ccc; // 赋地址
printf("%d %d %d\n", **p[0], **p[1], **p[2]); // 打印值
printf("%d %d %d\n\n", **p[6], **p[7], **p[8]); // 打印值
// 第二部分 分配 指针 指向的单元
for ( i=0;i<9;i++) p[i] = (int **) malloc(sizeof(int *) * 2);
for (j=0;j<2;j++) {
for ( i=0;i<9;i++){
p[j][i] = (int *) malloc(sizeof(int) * 3);
}
};
// 赋值 1,2,3,4。。。54 并打印值
for (i=0;i<3;i++) for (j=0;j<2;j++) for (k=0;k<9;k++) { p[i][j][k] = a; a++;};
for (i=0;i<3;i++) for (j=0;j<2;j++) for (k=0;k<9;k++) printf("%d\n",p[i][j][k] );
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
**a[9]表示....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-04-28
展开全部
可以这样理解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询