在这儿值介绍二维数组元素的访问方式,三维、四维……的与之类似。
先用一维数组的相关知识来抛砖
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>//1、一维数组元素的下标引用与指针访问int main(){int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };printf("%d\n", *(arr + 2)); //数组名相当于一个指针,加减一个整数后还是一个指针,因为想要获得它里面保存的内容,必须要解引用printf("%d\n", *(2 + arr));printf("%d\n", arr[2]);printf("%d\n", 2[arr]);//因为 *(arr+i)与*(i+arr)的含义相同,所以类似的arr[i]与i[arr]的含义也相同(由程序输出结果可知)system("pause");return 0;}
接下来就是引出来的玉
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>//2、多维数组可以都可以当做一维数组int main(){int calendar[3][7] = { { 1, 2, 3, 4, 5, 6, 7 }, { 8, 9, 10, 11, 12, 13, 14 }, { 15, 16, 17, 18, 19, 20, 21 } };int *p = calendar[1];printf("%d\n", sizeof(calendar[1])); //输出结果为28//数组calendar的可以理解为是一个一位数组,它包含三个元素,每个元素是一个含有//7个整型元素的一维数组。那么就可以理解为什么输出为28了,28 = 7 x sizeof(int)printf("%d\n", *p);//根据输出为8也可以确定p(calendar[1])确实是指向了数组中的第8个元素printf("%d\n", calendar[1][5]);printf("%d\n", *((calendar[1]) + 5)); printf("%d\n", *(*(calendar + 1) + 5));//二维数组的元素用指针和数组下标两种不同的访问方式system("pause");return 0;}
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){char *p = "abcdefg";printf("%c\n", *(p + 3));printf("%c\n", p[3]); //指针指向的内容同样可以用数组下标来引用system("pause");return 0;}