你好,我是胡光,上节课中,我们对两个概念做了区分,就是“值”和“变量”。你也看到了,当我们将 printf 函数中的第一个参数,抽象成变量以后,整个程序的功能会变得异常的灵活。
今天我们将要学习的 “指针”呢,也是一种变量,这是一种存储地址的变量。这种变量,可谓是所有变量的终极形态,掌握了指针,也就掌握了程序设计中“变量”的全部知识。今天,我们只会围绕着一句话进行学习,一定要记住,那就是 “指针变量也是变量”。
任务介绍
这次的任务,是需要我们结合两次学习(本节内容和下一节内容)才能完成,到底是什么呢?你不要有畏惧心理,其实这个任务很简单,假设有如下结构体数组,请看如下代码:
struct Data {
int x, y;
} a[2];
请用尽可能多的形式,替换下面代码中 &a[1].x 的部分,使得代码效果不变:
struct Data *p = a;
printf("%p", &a[1].x);
你会看到,如上代码中,其实就是输出 a[1].x 的地址值。
到了这里,你可能对结构体还不熟悉,并且,你可能对于这个任务应该如何完成还是一头雾水,没关系,暂时忘了这个任务,我们先来讲讲可以解决任务的一些基础知识,再回来看这个任务。
进行下面的学习之前,我还是要强调一下那句话,这句话是我们这两次学习的重点,也是帮助你学习指针的利器,叫做“指针变量也是变量”。