C中的数组指针

use*_*048 1 c arrays pointers

好的,所以我正在学习指针,我无法理解指针在数组中的作用.

基本上是这样的:

int a[5] = {1,2,4,7,7}; // (allocated at 0xA000)    
int b[5] = {4,3,5,1,8}; // (at 0xA0020)    
short *c[2];            // (at 0xA0040)
c[0] = (short *)b;
c[1] = (short *)a;
Run Code Online (Sandbox Code Playgroud)

我应该确定这些计算的值.

c[0] + 4 
Run Code Online (Sandbox Code Playgroud)

据我所知,c是一个指针数组.c[0]是一个short,用于保存指向数组第一个元素的指针b.如果b开始0xA0020为什么是c[0] + 4不是0xA0024,而是它0xA0028.

另外,我该如何确定其价值c[1][2].c不是一个多维数组,那么这个计算将如何解决?

谢谢!

小智 5

实际上,当您向指针添加数字时,此数字乘以指向的元素的大小(short在您的情况下,因为您有一个short*).short您的计算机上的大小可能是2个字节,因此它会为地址增加4*2,即8.

以下是来自MSDN的链接,解释了这一概念:

点击这里