【C语言】三种方法访问一维数组元素(下标法、指针法、指针变量法)

一、下标法

下标法是访问一维数组最常规的方法,通过具体的下标可访问对应位置的元素,如一个一维数组a[10],a[3]就是它的第4个元素的值。

c 复制代码
#include<stdio.h>
int main()
{
  int a[10];
  int i;
  printf("请输入10个整数:");
  for(i=0;i<10;i++)
    scanf("%d",&a[i]);
  printf("\n");
  for(i=0;i<10;i++)
    printf("%d",a[i]);
  printf("\n");
  return 0;
}

二、指针法

如果需要通过指针访问数组元素,那就需要定义指向数组元素的指针变量。下面的例子就可以定义一个指向数组元素的指针变量。

int a[10]

int b;
...
b = &a[0];
把数组a首元素的地址赋值给b,使b指向a数组的第0号元素。表达式&a[0]正是数组名本身的值,所以下面这条赋值语句与上面的赋值语句完全等价:
b = a;
在前面定义的已有环境中,理解下面这个表达式的含义:
(b+i)

首先b是一个指向整型的指针变量,加法运算的结果是另一个指向整型的指针,i的值根据整型数据的长度进行调整,它指向数组第0个元素向后移i个整数长度的元素。然后,间接访问操作访问这个新元素。

这个过程和下标引用a[i]的执行过程完全相同,那么,除了优先级外,下标引用和间接访问完全相同。由于数组名a的值是一个指针常量,下面这几个表达式是相同的:

a[i]

*( b + i )

*( a + i )

b[i]

c 复制代码
#include<stdio.h>
int main()
{
  int a[10];
  int i;
  printf("请输入10个整数:");
  for(i=0;i<10;i++)
    scanf("%d",a+i);
  printf("\n");
  for(i=0;i<10;i++)
    printf("%d", *(a+i) );
  printf("\n");
  return 0;
}

三、指针变量法

c 复制代码
#include<stdio.h>
int main()
{
  int a[10];
  int *p;
  printf("请输入10个整数:");
  for(p=a; p<a+10;p++)
    scanf("%d",p);
  printf("\n");
  for(p=a; p<a+10;p++)
    printf("%d",*p);
  printf("\n");
}
相关推荐
焦耳加热1 天前
阿德莱德大学Nat. Commun.:盐模板策略实现废弃塑料到单原子催化剂的高值转化,推动环境与能源催化应用
人工智能·算法·机器学习·能源·材料工程
CodeCraft Studio1 天前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一1 天前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
wan5555cn1 天前
多张图片生成视频模型技术深度解析
人工智能·笔记·深度学习·算法·音视频
u6061 天前
常用排序算法核心知识点梳理
算法·排序
lingchen19061 天前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
索迪迈科技1 天前
基于野火F407开发板实现电源管理-停止模式
c语言·stm32·单片机·嵌入式硬件·mcu
gb42152871 天前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go1 天前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠1 天前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程