国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

五分鐘殺穿指針 pointer——C語言專題

MycLambert / 2782人閱讀

摘要:另外,通過指針可以更便捷地操作數組。在一定意義上可以說,指針是語言的精髓。野指針成因除了未初始化還有就是越界訪問或者指針指向空間已經釋放。所以不難知道兩個地址相減就是元素的個數,這個表達式的前提是兩個指針指向同一塊空間。

傳統藝能?

小編是大一菜鳥不贅述,歡迎大佬指點江山(QQ:1319365055)
此前博客點我!點我!請搜索博主 【知曉天空之藍】點我!點我!請搜索博主 【知曉天空之藍】或掃碼進入!
喬喬的gitee代碼庫(打灰人歡迎訪問,點我!

(https://blog.51cto.com)感謝支持!

過渡區?

現在是北京時間11:30,周三nb,單周沒有課,算是在彌補周六了吧。夜貓子屬實走不出晚起陰影,早8人干完飯回來搗鼓到這個點捏,差不多得了,習慣就好,習慣就好??

正片開始?

指針?

指針提供了對地址操作的一種方法,因此,使用指針可使得 C 語言能夠更高效地實現對計算機底層硬件的操作。另外,通過指針可以更便捷地操作數組。在一定意義上可以說,指針是 C 語言的精髓。

概念解釋就不去搬原定義了,又臭又長不好理解,精煉兩點就是:
1.指針是內存中的一個最小單元的編號,也就是地址;
2.平時我們說的指針,通常是指指針變量,用來存儲內存地址的變量

也就是說:指針就是地址,口語中指針通常是指針變量

內存?

要搞明白指針首先要搞明白內存。

我們把一大坨內存劃分為一個個小的內存單元,一個基本單元大小為一個字節,我們對應需要某個單元里面的數據時,就要進行查找,大海撈針的工程如果逐個排查就顯得低效而呆滯,于是我們就對其編號,如同對一個大酒店的房間設置門牌號一樣。我們說的內存編號就相當于內存地址

這個編號是怎么產生的呢?我們的機子有32位和64位,對應有32根地址線和64根地址線,地址線其實就是電線,通電后高低電頻轉化為數字信號對標的就是 1 和 0 。強調一點,這些編號是不需要存起來的。

我們實際看一下數據在內存中的布局,通過調試的內存窗口可以進行監視,

為了直觀看到我直接在地址欄輸入 &a 查看當前內容:

發現確實如此。

指針類型?

int* pa = &a;char* pb = &a;

意義:
我們把 int* 放到char里面可行嗎?理論上是可以的,因為指針大小都是四個字節,但是放到char里面解引用只訪問了一個,總結一下,指針類型賦予了指針的訪問權限大小。

野指針?

形如:

int main(){int *p;*p = 20;return 0;}

野指針就像是野狗,這條野狗它沒有主人,因此它很危險見誰咬誰;同理,指針沒有初始化時,它沒有指向任何對象,就不敢動他,p的地址是隨機值,分配的空間也是不知道的。
野指針成因除了未初始化還有就是越界訪問或者指針指向空間已經釋放。所以一定要初始化,有值就指向這個值,沒有就直接NULL或者分配一塊合理的空間以保證有效性(如下)。當你有一個指針創建了不想用時,記得一定把這條野狗栓在樹上!

int* p = NULL;  int* q = (int*)malloc(1024);  

指針運算?

指針之間其實是可以進行計算的,比如指針 - 指針,如下:

int main(){int a[5]={0};prinf("%d/n",&a[4]-&a[0]);prinft("%d/n",&a[0]-&a[4]);return 0;}

結果是4,-4。所以不難知道兩個地址相減就是元素的個數,這個表達式的前提是兩個指針指向同一塊空間。
有一些特殊情況需要給大家聲明一下:

for (int *p = &arr[NUM - 1]; p >= arr; p--) {        printf("%d ",*p); }

當數組–這種結構存在時,雖然很多編譯器可以順利完成,但還是應該避免這樣寫,因為標準并不保證它可行,規定是:

C語言標準規定了允許指向數組元素的指針可以和最后一個元素后面的內存位置進行指針比較,不允許與第一個元素之前的內存位置進行比較

二級指針?

看上去是不是感覺很高大上?不要想的太神秘也不用過分聯想。
我們在寫指針時“ * ”不管是靠近類型還是變量意義都是一樣的,于是就有下面操作:

int main(){int a = 10;int* p = &a;int** pp = &p;return 0; }

這里 a取地址存入p,假設 p 是 0x0022FF40,在32位平臺下 p 有沒有地址呢?當然有,指針大小為 4 個字節嘛,必定會在內存中開辟一塊地方,那么我取 p 的地址時就是所謂的二級指針。
歐吼吼~~,對,快樂就是無限套娃,同理得三級,四級……

指針數組?

我們有整型數組形如:int arr[10] ;存放整型的數組,同理如:int* arr[10] = { &a,&b,&c…… } ,就是用來存放整型指針的數組。

今天就到這里吧,摸了家人們。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123730.html

相關文章

  • 體驗go語言的風騷式編程

    摘要:來我們一起感受下的風騷式的代碼風格。魔鬼式變量聲明數組的聲明就是數組,它的定義方式如下在中,表示數組的長度,表示存儲元素的類型。在開發中不定長度表示的數組全部都是。它有點類似于語言的類型。和命名將的和方法命名方案做了進一步發展。 最近想搞搞后臺開發,話說注意力就轉移到了公司用的golang。用Go做微服務比較方便,或許是因為golang強悍的語法吧,看到go的語法,自己已被深深的吸引。...

    taohonghui 評論0 收藏0
  • 體驗go語言的風騷式編程

    摘要:來我們一起感受下的風騷式的代碼風格。魔鬼式變量聲明數組的聲明就是數組,它的定義方式如下在中,表示數組的長度,表示存儲元素的類型。在開發中不定長度表示的數組全部都是。它有點類似于語言的類型。和命名將的和方法命名方案做了進一步發展。 最近想搞搞后臺開發,話說注意力就轉移到了公司用的golang。用Go做微服務比較方便,或許是因為golang強悍的語法吧,看到go的語法,自己已被深深的吸引。...

    浠ラ箍 評論0 收藏0
  • C語言指針這一篇夠了(一萬二千字,包含指針與數組,函數指針等詳解)

    摘要:指針變量可以存放基本類型數據的地址,也可以存放數組函數以及其他指針變量的地址。數組名表示的是整個數組所占的字節數。在這里數組指針的類型是。這也是我們可以用數組指針來接收二維數組數組名的原因。 目錄 零.前言 一.指針的定義 二.指針類型的意義 1.指針類型決定了指針解引用時一次訪問幾個字...

    My_Oh_My 評論0 收藏0
  • C語言知識精講②】函數棧幀的創建和銷毀(全程圖解)

    摘要:這里分塊講解六函數棧幀的銷毀過程一解析的作用是將棧頂的數據彈出,彈出數據儲存到相應寄存器中。 ?前言? 讀完這篇博客,你可以明白什么? ①局部變量到底是怎么在棧上創建的? ②為什么局部變量不初始化為隨機值? ③函數是怎么傳參的?傳參的先后順序是什么? ④形參和實參是什么關系? ⑤函數調用是怎...

    davidac 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<