首页投稿(暂停使用,暂停投稿)程序员iOS Developer

C语言的指针与数组(进阶篇之一)

2016-07-16  本文已影响293人  遮天的龙

一、一维数组与指针

(1).数组指针
  在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表示,因此,数组a的数组指针=a=&a[0]。
给个例子:

 int (*pName)[N];   对一维数组取地址,等价于数组指针而不是二级指针。
 int arrray[10];
 int(*pa)[10] = &array;    【正确】
 int **pa = &array;         【错误】

(2).数组指针变量
  【定义】存放数组元素地址的变量称为数组指针变量。

 int a[5];   int *p=&a[0];  //p为数组指针变量。

eg:用指针变量访问数组元素。

#include <stdio.h>
void main( void)
{ 
  int a[5]={0,1,2,3,4},i,j,*p,n=5;
  p=a;
  for (i = 0;i < n;i++)
  {
      printf("*p\t\n";*p);
   //通过移动指针变量,依次访问数组元素。
      p++;
  }
  p = a; 
  for(i = 0;i < n;i++ )
  {
      printf("*(p + i)\t\n";*(p+i));
      //指针变量不变,用p+i 访问数组第i个元素。
  }
  for(i = 0;i < n;i++)
  {
      printf("*(a + i)\t\n";*(a + i));
      //指针变量不变,用 a+i 访问数组第i个元素。
  }
  for (i = 0;i < n;i++)
  {
      printf("p[i]\t\n";p[i]);
     //以指针变量名作为数组名访问数组元素。
  }
}

输出:
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4

(3).数组元素的引用

在一维数组a[ ]而言,当p=a后,有如下等同关系成立:

① p+i=a+i=&a[i],即p+i、a+i 均表示第i个元素的地址&a[i]。
② *(p+i) =*(a+i)=p[i]= a[i]。即*(p+i), *(a+i), p[i]
均表示第i个元素值a[i]。//p[i] 的运行效率最高。
总结:一维数组的第i个元素可用四种方式引用,即:

 a[i]、*(p+i) 、*(a+i)、p[i]。
上一篇下一篇

猜你喜欢

热点阅读