本人是一名大一的新生,对于某些概念理解的可能并不出色。此文章会随着我学习的深入进行不断的修改。
在学习数据结构(C语言版)的时候(早期有学过用python表示的数据结构)发现在C语言所表示的数据结构中,指针的运用非常广泛,我也发现自己对指针的理解十分不到位。故现在正在重新深入学习指针中。
今日是深入学习指针的第一天,也借此来记录一下暂时的所得。我粗陋地认为可以把指针看成一块踏板哪怕是多级指针,也是在通过与低一级的指针之间建立联系,靠着踏板之间的相互联系,通过一块踏板跳向另一块踏板,并以此来获得踏板中的内容。(由于水平暂时比较低,今日暂且写这么多,随着学习深入,我希望能不断的完善脑中的观念)
//第一次修改博客,加入了学习到的新东西
稍微深入了一点指针与二维数组的关系,亦是发现如下东西。例如int a[6][6];*a即a[0]的地址,而*a+1则为a[0][1]的地址
且看下方代码
#include <stdio.h>
int main() {
int a[6][6];
printf(" % d", *a);
printf(" % d", a);
printf(" % d", *a + 1);
printf(" % d", *(a + 1));
}
且看后续输出
则可以很清楚的看到地址的差异
可知a[6][6]是一个二维数组 *a只是其地址,那么如何来取得其中的值呢,则需要解引用,我认为吧,二维数组嘛,前面得加两个**才能取得地址中所寄存的值
且看代码实例
#include <stdio.h>
int main() {
int a[3][3] = { 0,1,2,3,4,5,6,7,8 };
printf("%d\n",**a);//a[0][0]
printf("%d\n", *(*a+1));//a[0][1]
printf("%d\n", *(*(a+1)));//a[1][0]
}
且看输出结果即可