Array and its point.
a is the array name.
&a is the ponit of 2-D array which contains a[5].
the type of &a should be int (*)[5]. oh what is int(*)5................................
int(*p1)[5] = (int(*)[5])a; p1++;
int *p2 = (int *)(&a + 1);
int (*p3)[5]=&a; a++;
p1==p2==p3
int **p p is a point for 2D-array.
int *p[5] p is a point for 1D-array. The array contains 5 points.
int (*p)[5] is a point for 1D-array. The array contains any points. any points of it contain 5 int number.
int a[5]. a is a 1-D array of 5 numbers. int *p=a. p is the point of a. so, the size of p should be 20. But actually, the size of p is just 4. You must use the form of int(*p)[5].
四、用法: 
       (1)、int **Ptr  
       因为是指针的指针,需要两次内存分配才能使用其最终内容。首 
先,Ptr = ( int ** )new int *[ 5 ];这样分配好了以后,它和(2)的 
意义相同了;然后要分别对 5 个指针进行内存分配,例如: 
  Ptr[ 0 ] = new int[ 20 ]; 
  它表示为第 0 个指针分配 20 个整数,分配好以后, Ptr[ 0 ] 为指 
向 20 个整数的数组。这时可以使用下标用法 Ptr[ 0 ][ 0 ] 到 
Ptr[ 0 ][ 19 ] 了。 
      如果没有第一次内存分配,该 Ptr 是个"野"指针,是不能使用 
的,如果没有第二次内存分配,则 Ptr[ 0 ] 等也是个"野"指针,也 
是不能用的。当然,用它指向某个已经定义的地址则是允许的,那是另外 
的用法(类似于"借鸡生蛋"的做法),这里不作讨论(下同)。 
      (2)、int *Ptr[ 5 ] 
      这样定义的话,编译器已经为它分配了 5 个指针的空间,这相当 
于(1)中的第一次内存分配。根据对(1)的讨论可知,显然要对其进行一次 
内存分配的。否则就是"野"指针。 
      (3)、int ( *Ptr )[ 5 ] 
      这种定义我觉得很费解,不是不懂,而是觉得理解起来特别吃力, 
也许是我不太习惯这样的定义吧。怎么描述它呢?它的意义是"一群" 
指针,每个指针都是指向一个 5 个整数的数组。如果想分配 k 个指针, 
这样写: Ptr = ( int ( * )[ 5 ] ) new int[ sizeof( int ) * 5 * k ]。 
这是一次性的内存分配。分配好以后,Ptr 指向一片连续的地址空间, 
其中 Ptr[ 0 ] 指向第 0 个 5 个整数数组的首地址,Ptr[ 1 ] 指向第 
1 个 5 个整数数组的首地址。 
   综上所述,我觉得可以这样理解它们: 
   int ** Ptr <==> int Ptr[ x ][ y ]; 
   int *Ptr[ 5 ] <==> int Ptr[ 5 ][ x ]; 
   int ( *Ptr )[ 5 ] <==> int Ptr[ x ][ 5 ]; 
   这里 x 和 y 是表示若干的意思。
Array and its point.的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
		
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
 - ES5对Array增强的9个API
		
为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...
 - JavaScript Array对象
		
介绍Js的Array 数组对象. 目录 1. 介绍:介绍 Array 数组对象的说明.定义方式以及属性. 2. 实例方法:介绍 Array 对象的实例方法:concat.every.filter.fo ...
 - 了解PHP中的Array数组和foreach
		
1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组 . 2.例子:一般的数组 这里,我 ...
 - 关于面试题 Array.indexof() 方法的实现及思考
		
这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...
 - javascript之活灵活现的Array
		
前言 就如同标题一样,这篇文章将会灵活的运行Array对象的一些方法来实现看上去较复杂的应用. 大家都知道Array实例有这四个方法:push.pop.shift.unshift.大家也都知道 pus ...
 - 5.2 Array类型的方法汇总
		
所有对象都具有toString(),toLocaleString(),valueOf()方法. 1.数组转化为字符串 toString(),toLocaleString() ,数组调用这些方法,则返回 ...
 - OpenGL ES: Array Texture初体验
		
[TOC] Array Texture这个东西的意思是,一个纹理对象,可以存储不止一张图片信息,就是说是是一个数组,每个元素都是一张图片.这样免了频繁地去切换当前需要bind的纹理,而且可以节省系统资 ...
 - Merge Sorted Array
		
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
 - C++ std::array
		
std::array template < class T, size_t N > class array; Code Example #include <iostream> ...
 
随机推荐
- BZOJ1537: [POI2005]Aut- The Bus
			
1537: [POI2005]Aut- The Bus Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 158 Solved: 100[Submit][S ...
 - LU分解(1)
			
1/6 LU 分解 LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵.对应的matlab代码如下: function[L, U] =zlu(A) % ZLU ...
 - 话说python
			
前几年就职于一个大的软件公司时,开发过程中,有一个流程化的步骤要做,就是要由一个excel文档导出生成一堆sql语句.当时使用一个高手写的代码,只不过有限几行代码(应该不到100行),就完美实现此功能 ...
 - 将使用netTcp绑定的WCF服务寄宿到IIS7上全记录 (这文章也不错)
			
原文地址:http://www.cnblogs.com/wengyuli/archive/2010/11/22/wcf-tcp-host-to-iis.html 摘要 在项目开发中,我们可能会适时的选 ...
 - UVALive 6198 A Terribly Grimm Problem
			
题目大意是 给出L,H 10^10范围 为[L, H]这个连续的整数区间寻找一个序列. 序列的长度要跟[L, H]一样 然后序列中的数都是素数,并且互不相同 并且序列中第i个数 要求是L + ...
 - 使用jquery生成二维码
			
二维码已经渗透到生活中的方方面面,不管到哪,我们都可以用扫一扫解决大多数问题.二狗为了准备应对以后项目中会出现的二维码任务,就上网了解了如何使用jquery.qrcode生成二维码.方法简单粗暴,[] ...
 - save与 merge与  saveOrUpdate的区别
			
save()方法很显然是执行保存操作的,如果是对一个新的刚new出来的对象进行保存,自然要使用这个方法了,数据库中没有这个对象. update()如果是对一个已经存在的托管对象进行更新那么肯定是要使用 ...
 - Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)
			
原文地址:http://blog.csdn.net/sttyytw/article/details/17005263 声明:本教程在參考了下面博文,并经过自己的摸索后实际操作得出,本教程系本人原创,因 ...
 - [转] GDB attach
			
转:http://blog.csdn.net/wangeen/article/details/14230171 attach是GDB一种重要的debug模式,在MPI程序debug中发挥重要的作用. ...
 - Android 仿Win8的metro的UI界面(上)
			
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23441455 昨晚没事手机下载了一些APP,发现现在仿win8的主界面越来越多, ...