请问C语言中**a[9]是什么意思呢?

**应该表示2维指针,那**a[9]表示什么呢?它能用来表示一个三维数组a吗??a有9行,其中每行为一个二维数组。... **应该表示2维指针,那**a[9]表示什么呢?
它能用来表示一个三维数组a吗??a有9行,其中每行为一个二维数组。
展开
 我来答
L_o_o_n_i_e
2008-04-29 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5198万
展开全部
"**应该表示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] );
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友21b6e13fe
2008-04-28 · 超过46用户采纳过TA的回答
知道答主
回答量:254
采纳率:0%
帮助的人:162万
展开全部
**a[9]表示....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-04-28
展开全部
可以这样理解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式