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

作者: 遮天的龙 | 来源:发表于2016-07-16 10:53 被阅读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]。

相关文章

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

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

    一、一维数组与指针 (1).数组指针在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • 指针与数组的区别和联系

    原文地址:指针与数组的区别和联系作者:zhenhuaqin 一.指针与数组的联系: 指针与数组是C语言中很重要的两...

  • 慕课网-Linux C语言指针与内存-学习笔记

    Linux C语言指针与内存 工具与原理 指针 数组 字符串 堆内存与栈内存 gdb内存调试工具。 C语言中指针的...

  • 浅谈C语言数组与指针的关系

    浅谈指针定义细节及其与数组的关系 前言 翁恺老师曾经说过,指针是 C 语言的灵魂,是使 C 语言成为 “C语言” ...

  • C语言---数组指针与指针数组

    数组指针和指针数组是两个容易搞混的概念,接下去我们对它们进行一个详细的分析。首先,理解一下数组指针和指针数组这两个...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

网友评论

    本文标题:C语言的指针与数组(进阶篇之一)

    本文链接:https://www.haomeiwen.com/subject/pmqujttx.html