为什么动态二维数组的指针

 我来答
xb9009154
2023-01-13 · 超过103用户采纳过TA的回答
知道小有建树答主
回答量:3604
采纳率:91%
帮助的人:84.3万
展开全部
指针的指针,称为二级指针。 所谓级(级别),就是经过几次间接(访问) 一级指针,一次间接访问,就可以找到原始数据了 二级指针,要经过两次访问,才能找到。 定义 动态二维数组 -------------- 其实是模仿数组, C,C++本身的数组,是静态数组, 数组中定义的数据是连续存放的 动态数组, 就是仿照静态数组的样子,用一块可以存放连续N 个数据元素的内存块, 当作数组使用, 因为语法上,[] 既可以用于数组,又可以用于指针。 所以,C,C++ 的动态数组,和静态数组,惊人的相似。 ----------------------- 也可以用数组的指针(一级指针),来定义二维数组。 不过显然不如二级指针灵活 所以,通常就用二级指针,来处理。 所谓多维数组,就是用多个下标来访问 数组的元素的数组。 这里的维(度)指的是,需要访问单个元素的(最多)下标个数。 例如 int a[4][5] ;//二维数组, 第一维,4个元素-----这个数组内部,有4个一维数组 ,也就是4个int[5]------, 第二维5个元素-------它的每个 int[5] ,5个元素,也就是5个int------, 一共 4*5 =20个元素,也就是一共20个int; 访问方式 a[i][j] 需要,i,j 两个下标来访问 所以是两维数组。 对于 C,C++,多维数组,就是 数组的数组。 数组,就是连续存放的一批相同类型的数据元素。 这个数据元素,它的类型,可以是内置类型(char,int,float,double 等), 也可以是,结构类型,类类型 等用户定义类型。 也可以是某种类型元素的数组,这种类型。 数组是一种集合类型, 这里的集合,不是数学意义上的集合 ------数学中的集合定义太抽象,太严格---------, 而是堆积在一起的一批数据元素。
来自凌云塔有上进心的海贝
2023-01-13 · 超过146用户采纳过TA的回答
知道小有建树答主
回答量:9164
采纳率:100%
帮助的人:142万
展开全部
按照我后面定义的m也是一个int *类型的指针啊?IntArrayPtr *m = new IntArrayPtr[d1],该怎么解释等号前面的部分呢?难道这样的就是一个二维指针了?[/quote] 我回答这么说只是不想有过多的废话,是你理解的不够深入! 啰嗦一点地说,IntArrayPtr *m;这个变量m的类型是int**型,变量m中存放的数据类型需要是int*型的地址,而new IntArrayPtr[d1]执行的结果正好是int*型变量的数组首地址,因为是int*型变量数组首地址,所以是int**型。这整好是m的类型。因此编译器编译通过。 再说改成这样:IntArrayPtr m; m = new IntArrayPtr[d1];却不可以?这个问题! 这个m是int*型变量。而new IntArrayPtr[d1]执行的结果是int**型,所以将int**型赋值给int*变量m是错误的。 举个例子: int *p = new int; // OK int ** pp = new (int*); // OK int* pp2 = new (int*); // Fault 明白了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式