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

一、下标法

下标法是访问一维数组最常规的方法,通过具体的下标可访问对应位置的元素,如一个一维数组a10,a3就是它的第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 a10

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

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

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

ai

*( b + i )

*( a + i )

bi

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");
}
相关推荐
djarmy5 小时前
MAIN.c(1): warning C318: can’t open file ‘STC8G.H’ 报错 解决 分析
c语言·开发语言·mongodb
HEJOO95 小时前
深入理解 Java volatile 关键字:原理、用法与常见误区
java·开发语言·spring
曹牧5 小时前
Java:no content to map due to end of input
java·开发语言
梦梦代码精5 小时前
《回收租赁系统技术选型避坑指南:业务闭环与二开自由度详解》
开发语言·低代码·docker·开源·代码规范
隔窗听雨眠6 小时前
记一次SQL Server数据库性能分析:从CPU100%到单配置修复的完整诊断
开发语言·数据库·php
David猪大卫6 小时前
【C++修炼】智能指针使用及原理
开发语言·c++·经验分享·笔记·学习·考研·面试
charlie1145141916 小时前
现代Qt开发之图像处理进阶:像素操作与格式转换
开发语言·图像处理·qt
李永奉6 小时前
中科蓝讯SDK开发-BT893x 面条耳机连接vivo手机后连接APP端,最后手机端设置页面手动断开蓝牙连接,此时耳机端假断开
c语言·开发语言·嵌入式硬件·物联网·智能手机·电脑
2601_967760786 小时前
2026年PDF压缩与页码添加工具技术实测:性能、算法与本地化适配深度对比
算法·pdf
秦老师Q7 小时前
php零基础入门到实战,从语法到框架,一篇搞定
开发语言·php