您的位置:首页 > 其它

多维数组元素的下标引用于指针访问

2016-03-06 19:46 260 查看
在这儿值介绍二维数组元素的访问方式,三维、四维……的与之类似。

先用一位数组的相关知识来抛砖

#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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: