當有人問起,什么是指針時,我會毫不猶豫地回答,指針變量存放的是地址!然后呢,好像也說不出什么了,今天就再來詳細看一下指針吧。
本文提綱如下:
? 指針變量
? 未初始化的指針
? NULL
? void指針
? 指針的指針
首先要明白幾點:
? 每個字節都有自己唯一的地址,就像門牌號一樣,根據地址可以準確地找到某個字節
? 如果知道一個變量的存儲地址,那么就可以根據這個地址得到這個變量的值。但是這很難,因為很難知道某個變量的具體地址,所以一般都是使用變量名字而不是地址來訪問內存的位置
? 變量名讓我們用更方便的方式記住地址,實際上,變量名和地址之間的對應關系是由編譯器來實現的,硬件仍然是通過地址訪問內存位置
? 除變量名之外,函數名、數組名、字符串名都是一樣的,都為我們提供了方便,在編程的過程中不用直接面對二進制地址
1. 指針變量
我一開始還糾結要不要寫這一部分,我想還是不要眼高手低吧,從最基礎的開始寫起吧。
相信大家都知道了,C語言中可以使用一個變量來存放地址,這種變量稱為指針變量,這里的地址可以是變量、數組、字符串、函數的地址,也可以是另一個指針變量的地址。
1.1 定義指針變量
int a = 100;
int b = 200;
char c = 'A';
int *p1 = &a; //定義指針變