指向数组的指针变量成为数组指针变量。一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。
该实例我们实现了使用数组的指针引用数组,利用数组名以及下标引用数组等。
其中,使用数组的指针和数组的下标来遍历数组的时候可能不太容易理解,但是我已经在注释中说明清楚了。
下面附上我的代码:
~~~
#include <stdio.h>
/**
* 本实例实现通过指向数组的指针引用数组,
* 利用数组名以及下标引用数组等
* @brief main
* @return
*/
int a[]={1,2,3,4,5};
#define N sizeof(a)/sizeof(a[0])
int main(void)
{
int j; //游标变量
int *p; //指针变量
//利用数组名和下标顺序访问数组元素
for(j = 0;j < N;j++){
printf("a[%d]\t= %d\t",j,a[j]);
}
printf("\n");
//让指针顺序指向数组的各元素,遍历数组
for(p = a;p < a+N;p++){
printf("*p\t= %d\t",*p);
}
printf("\n");
//指针和游标变量结合,改变游标变量遍历数组
for(p = a,j = 0;p+j<a+N;j++){
printf("*(p+%d)\t= %d\t",j,*(p+j));
}
printf("\n");
//指针和游标变量结合,用指针和下标遍历数组
for(p=a+N-1,j=N-1;j>=0;j--){
/**
* 这个地方刚开始一直没有看懂,后来明白了
* 当p=a+N-1时,就已经将该位置当作下标为0了
* 所以,其前一个元素就是a[-1]也就是4
*/
printf("p[-%d]\t= %d\t",j,p[-j]);
}
printf("\n");
return 0;
}
~~~
下面是我的程序运行的结果截图:
![这里写图片描述](https://box.kancloud.cn/2016-05-24_5743c0754f499.jpg "")
- 前言
- 实例一:HelloWorld
- scanf函数学习
- 实数比较
- sizeof()保留字获取类型的大小
- 自增/自减学习
- C学习if条件判断和for循环
- C实现的九九乘法表
- C实现一个比较简单的猜数游戏
- 使用C模拟ATM练习switch..case用法
- 记录一个班级的成绩练习一维数组
- C数组实现矩阵的转置
- C二维数组练习
- 利用数组求前n个质数
- C实现万年历
- C实现数组中元素的排序
- C实现任意进制数的转化
- C判断一个正整数n的d进制数是否是回文数
- C使用递归实现前N个元素的和
- 钢材切割问题
- 使用指针比较整型数据的大小
- 指向数组的指针
- 寻找指定元素
- 寻找相同元素的指针
- 整数转换成罗马数字
- 字符替换
- 从键盘读入实数
- C实现字符行排版
- C实现字符排列
- C实例--判断一个字符串是否是回文数
- 通讯录的输入输出
- 扑克牌的结构定义
- 使用“结构”统计学生成绩
- 报数游戏
- 模拟社会关系
- 统计文件中字符个数
- C实现两个文件的内容输出到同一个屏幕