最近在學數據結構,發現裏面幾乎都要用到指針,這讓我不得不復習一下指針,畢竟指針是c語言的靈魂,弄明白了這個,學其方面也有幫助,因此如今咱們第一天先淺談指針。數據結構
1、指針概念:學習
一、什麼是指針?spa
在講指針以前,要明白「地址」這個概念(由於這個是理解指針的小前提):寄快遞想必你們都不陌生吧,在寄快遞的時候,你必須得填寫收件人的所在地方(也就是地址),這樣快遞公司纔好運送。操作系統
從這個簡單的例子能夠看出,地址就是一個標記識別符,你得知道它在哪裏,才方便辦事,雖然這個例子不太好,但仍是有助於理解(在計算機裏面,地址是內存單元的編號,是一個從0開始的非負整數,範圍是從0----0XFFFFFFFF(0---4G-1),注意這裏的0XFFFFFFFF是32位操做系統的內存空間大小)。好了,例子說完了,迴歸主題;指針就是地址就是地址,地址就是指針,指針本質是一個操做受限的非負整數,是否是好理解,hhh 。指針
二、什麼是指針變量,什麼是變量指針?code
本身一開始學習指針的時候,被這個弄暈了頭,總是弄錯了,非常傷腦筋;那咱們來看一下他們的區別吧(也是對本身再一個學習):blog
a、指針變量:它是一個存放內存單元地址的變量。內存
b、變量指針:簡單來講就是變量的地址io
咱們仍是來看一個簡單的代碼來理解:class
1 #include <stdio.h> 2 int main() 3 { 4 int * p; //p是一個變量名字,int * 表示該p變量只能存儲int類型變量的地址 ,也就能夠理解上面那個指針變量 5 int i=10; 6 int j; 7 8 9 p=&i; //這裏的"&"是一個取地址符號,把i變量的地址取出來賦給指針p,這裏能夠理解上面那個 變量指針,也就是說的變量地址,由於其實每一個變量在內存單元中都有一個地址標識符 10 printf("%p\n",p); #打印出p的地址 11 }