数组下标的别致用法

数组常识(common sense)

当一个数组被创建,数组下标都是从0开始计数的。例如,创建了一个名为 arr 的数组,可以通过 arr[i] 来读取数据。

arr 为数组名,i 为数组下标。

arr[i] 在编译器内部会被读取转换为另外一种形式:(arr  + i)

当 i 为0时,(arr + i)= arr(当前数组名)。因此数组名为一个基址,用于指示数组的第一个元素从哪里开始读取。

骚操作(PDD's way)

编译器将数组转换为(arr + i)的形式,因此可以得到的是:(arr + i)=(i + arr) = i[arr]

所以当 i 为整数时,两种形式可以换着用,完全等价。

代码演示(works in VS2017)

以下通过四种方法读取数组的值,包括指针的方法。

#include "stdafx.h"//这个头文件包含了stdio.h,VS2017新建工程自带这个头文件
#include<conio.h>//_getch()的头文件

int main()
{
	int arr[] = { 10, 11, 12, 13, 14 };

	/*使用数组下标访问数组元素——方法1*/
	for (int i = 0; i < 5; i++)
	{
		printf("%d\t", arr[i]);		
	}
	printf("\n");

	/*使用数组下标访问数组元素——方法2*/
	for (int i = 0; i < 5; i++)
	{
		printf("%d\t", i[arr]);
	}
	printf("\n");

	/*使用数组下标访问数组元素——方法3*/
	for (int i = 0; i < 5; i++)
	{
		printf("%d\t", *(arr+i));
	}
	printf("\n");

	/*使用数组下标访问数组元素——方法4*/
	for (int i = 0; i < 5; i++)
	{
		printf("%d\t", *(i + arr));
	}
	printf("\n");

	_getch();//使黑窗口不一闪而过,等待输入一个字符再退出
    return 0;
}

最后得到数组内容,一模一样:

扫描二维码关注公众号,回复: 6129219 查看本文章

参考书目:《C语言编程精解及面试攻略》

猜你喜欢

转载自blog.csdn.net/you_big_father/article/details/88941409