二级C语言考试辅导教程第六章:指针

豆豆网   技术应用频道   2007年12月08日  【字号: 收藏本文

本文详细介绍二级C语言考试辅导教程第六章:指针

  [Explain]#define PF "%d,%d,%d,%d,%d,
"
  main(){
  static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
  printf(PF,a,*a,a[0],&a[0],&a[0][0]);
  printf(PF,a+1,*(a+1),a[1],&a[1],&a[1][0]);
  printf(PF,a+2,*(a+2),a[2],&a[2],&a[2][0]);
  printf("%d,%d
",a[1]+1,*(a+1)+1);
  printf("%d,%d
",*(a[1]+1),*(*(a+1)+1));
  }

  二、多维数组的指针变量

  把二维数组a 分解为一维数组a[0],a[1],a[2]之后,设p为指向二维数组的指针变量。可定义为: int (*p)[4] 它表示p是一个指针变量,它指向二维数组a 或指向第一个一维数组a[0],其值等于a,a[0],或&a[0][0]等。而p+i则指向一维数组a[i]。从前面的分析可得出*(p+i)+j是二维数组i行j 列的元素的地址,而*(*(p+i)+j)则是i行j列元素的值。

  二维数组指针变量说明的一般形式为: 类型说明符 (*指针变量名)[长度] 其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。 “长度”表示二维数组分解为多个一维数组时, 一维数组的长度,也就是二维数组的列数。应注意“(*指针变量名)”两边的括号不可少,如缺少括号则表示是指针数组(本章后面介绍),意义就完全不同了。

  [Explain]main(){
  static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
  int(*p)[4];
  int i,j;
  p=a;
  for(i=0;i<3;i++)
  for(j=0;j<4;j++) printf("%2d ",*(*(p+i)+j));
  }

来源:豆豆网转载    作者:csai    责编:豆豆技术应用

正在加载评论...