龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

学点 C 语言(22): 数据类型 - 多维数组与指针

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
1. 关于数组的首地址: #include int main(void) { char cs[2][3] = { {'A','B','C'}, {'D','E','F'} }; char *p1,*p2,*p3,*p4; p1 = p2 = p3 = p4 = NULL; /* 下面四个指针都是指向了同一个地址 */ p1 = /* 这个最好理解 */ p2

  1. 关于数组的首地址:

#include 

int main(void)

{

  char cs[2][3] = {

           {'A','B','C'},

           {'D','E','F'}

          };

  char *p1,*p2,*p3,*p4;

  p1 = p2 = p3 = p4 = NULL;

  /* 下面四个指针都是指向了同一个地址 */

  p1 = &cs[0][0]; /* 这个最好理解 */

  p2 = &cs[0];

  p3 = &cs;

  p4 = cs;    /* 这个最方便  */

  printf("%pn%pn%pn%pn", p1, p2, p3, p4);  /* 显示地址 */

  printf("n%c %c %c %cn", *p1, *p2, *p3, *p4); /* 显示内容 */

  getchar();

  return 0;

}

  2. 数组其他元素的地址:

  例子中, 数组的元素在内存中应该是这样排列的:

  [0][0] [0][1] [0][2] [1][0] [1][1] [1][2]

  下面是通过指针的方式获取数组的第三个元素:

#include 

int main(void)

{

  int nums[2][3] = {

            {11, 12, 13},

            {21, 22, 23}

           };

  int *p1,*p2;

  p1 = p2 = NULL;

  p1 = &nums[0][2];

  

  p2 = nums;

  p2 = p2 + 2;

//  p2 = (int *)nums + 2; /* 或者用这一句替换上面两行 */

  printf("%d, %dn", *p1, *p2);

  getchar();

  return 0;

}

精彩图集

赞助商链接