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

一、一维数组与指针

(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]。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,473评论 3 44
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,002评论 2 13
  • 前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我...
    Xiho丶阅读 1,543评论 1 12
  • 问题来了 安静下来时经常思考一些看似莫名其妙的问题,我为什么来到这个世界?我对这个世界来说有什么意义?我为什么有现...
    Louis_Sherren阅读 604评论 0 8
  • 给自己半年时间,存5万,贷款8万,信用卡7万,共计20万首付。 买一套60~70万的房,100平左右最佳,不然万达...
    葫芦鱼阅读 231评论 0 0