当有人问起,什么是指针时,我会毫不犹豫地回答,指针变量存放的是地址!然后呢,好像也说不出什么了,今天就再来详细看一下指针吧。
本文提纲如下:
• 指针变量
• 未初始化的指针
• NULL
• void指针
• 指针的指针
首先要明白几点:
• 每个字节都有自己唯一的地址,就像门牌号一样,根据地址可以准确地找到某个字节
• 如果知道一个变量的存储地址,那么就可以根据这个地址得到这个变量的值。但是这很难,因为很难知道某个变量的具体地址,所以一般都是使用变量名字而不是地址来访问内存的位置
• 变量名让我们用更方便的方式记住地址,实际上,变量名和地址之间的对应关系是由编译器来实现的,硬件仍然是通过地址访问内存位置
• 除变量名之外,函数名、数组名、字符串名都是一样的,都为我们提供了方便,在编程的过程中不用直接面对二进制地址
1. 指针变量
我一开始还纠结要不要写这一部分,我想还是不要眼高手低吧,从最基础的开始写起吧。
相信大家都知道了,C语言中可以使用一个变量来存放地址,这种变量称为指针变量,这里的地址可以是变量、数组、字符串、函数的地址,也可以是另一个指针变量的地址。
1.1 定义指针变量
int a = 100;
int b = 200;
char c = 'A';
int *p1 = &a; //定义指针变