當前位置:
首頁 > 知識 > C語言基礎——指針學習

C語言基礎——指針學習

一、概念

1.1 指針變數它的存儲區中只能存儲地址數據;

1.2 指針變數的用途是找到另一個變數,且只能找到另外一個變數;

1.3 不同時候指針變數可以找到不同的變數;

1.4 只有把指針變數和變通變數捆綁後,才可以通過指針變數找到捆綁的普通變數(把普通存儲區的地址記錄在指針變數的存儲區中,就實現了他們之間的捆綁);

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙

int num = 10;

int *p_num = NULL;

p_num = #

1.5 指針變數之間存在類型的區別,指針變數的類型決定了捆綁變數的類型;

1.6 不同類型的指針變數大小相同,在我們的計算機上都是4個位元組,(ps:可以在不同類型之間可以轉換)

char *p_ch = NULL;

int *p_num = NULL;

printf("%d %d", sizeof(p_ch), sizeof(p_num));

結果

4 4

1.7 指針變數名稱前不加*,可以代表指針本身的存儲區和這個存儲區中的地址數據;

1.8 指針變數名稱前加*,可以代表捆綁存儲區和這個存儲區中的數值;

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙

二、指針的初始化

2.1 原因:在程序中是沒有辦法根據指針變數本身來判斷是否已經初始化過,因為只有捆綁過的指針才能表示捆綁存儲區,所以指針必須初始化;

2.2 空指針:沒有捆綁過的指針內部必須記錄地址NULL,這個地址的數值是數字0,這個地址叫空地址,記錄這個地址的指針叫空指針;

2.3 野指針:既沒有捆綁存儲存儲區也沒有記錄NULL的指針,程序中應該避免出現;

2.4 沒有初始化的指針就是野指針,因此,所有的指針都應初始化;

2.5 初始化的時候*不參與計算,初始化的是指針本身的存儲區;

三、使用指針

3.1 指針在程序運行中會和不同的存儲區捆綁;

3.2 任意指針之間賦值後地地數據不變;

3.3 多個不同類型的指針可以和同個存儲區捆綁

int num = 300;

int *p_num = #

char *p_ch = #

printf("%d %d", *p_ch, *p_num);

結果

44 300

*******結果44的原因:由於通過指針找到的存儲區的類型是由指針的類型決定的,p_ch是字元類型的指針,只能找到字元類型的存儲區,字元類型存儲區就是整數類型存儲區的最後8個二進位位,300轉化成二進位補碼後只保留8個二進位位的就是44;

3.4 可以把一個指針強制類型轉換成其他任意類型的指針去用;

int num = 300;

int *p_num = #

printf("%d", *(char *)p_num);

結果

44

強制類型轉換說明:計算機會先準備好一個字元類型的指針存儲區,然後把p_num指針存儲區的里數放到新字元類型的指針存儲區里;

3.5 void* 這種指針沒有規定捆綁存儲區的類型,可以和任何存儲區捆綁,必須先強制類型轉換成另外一種指針後才能取得捆綁存儲區,通常用來記錄類型不明或來源不明的存儲區;

int num = 14;

float f_num = 2.4f;

void *p = NULL;

p = #

printf("%d", *(int *)p); //強制類型轉換

p = &f_num;

printf("%g", *(float *)p);//強制類型轉換

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙

3.6 數組做函數形參時真正的形式參數是指針存儲區,這個指針存儲區和數組中的第一個存儲區進行了捆綁,因此它可以作為數組使用;

3.7 指針類型形式參數可以讓被調函數使用外部提供的存儲區;

3.8 編寫函數時不知道指針形式參數會和什麼類型的存儲區捆綁時需要把指針形參聲明成void*;

3.9 指針類型可以作為函數返回值存儲區使用,指針類型的返回值可以傳遞多個數據

3.10 絕對不可以把指針類型返回值存儲區和局部變數捆綁;

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

C和C加加文本搜索中的精確匹配演算法上
c語言易忽略知識點之緩衝區,一起來了解一下吧
假如語言是不同的雜貨鋪
初學C語言之函數篇學習
C語言的這些考點,你都知道嗎?

TAG:C加加 |

您可能感興趣

C語言指針學習,不一樣的代碼分析
C語言編程入門基礎結構體和指針
程序猿大神教你學C語言編程新手入門基礎:指針數組與數組指針
李鵬飛:C語言指針和函數詳解
精準醫學「新指針」 蛋白質組階段性成果公布
老版指針即將退役 英雄聯盟新版指針曝光
迪麗熱巴代言 GARMIN指針式健康運動腕錶上手
英國學校拆掉指針式時鐘,因為學生看不懂
迪麗熱巴代言 GARMIN指針式健康運動腕錶開箱圖賞
中國指針診療法創始人宗紹峰新書《一針見穴——手指上的醫院》在昆發布
【設計博聞】極簡主義手錶,非指針也非數字
音樂指針DSP-W6U無損播放器:三合一引領極簡操控新格局
指針驗證碼對於iOS越獄意味著什麼?
關愛男性健康 豪利時推出大錶冠指針日期Movember特別版腕錶
韓美簽署防衛合作指針:美軍向韓移交戰時作戰指揮權後 繼續駐紮半島
特色指針腕錶令人叫絕
C+實驗四:指針和數組
教育要聞:新時代留學工作的根本指針,建議收藏!
魅惑藍針 三款藍指針浪琴腕錶推薦
香港表商推出「時分單指針」手錶SNGLRTY