日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

凡人修仙学指针-1

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 凡人修仙学指针-1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、教程目標

本教程配套的視頻?

  • 通過凡人修仙主題,學習C/C++指針,從入門到精通(這里的精通指知識點的掌握)。
  • 在指針的使用上,達到企業開發和大面筆試的技術要求。
  • 效果演示:輕松實現FPS射擊類游戲的無限彈藥和鎖血、瞬移等功能。
  • 二、教程準備

    1. 準備好任意一款開發環境。gcc, g++, vs, devc++, vscode等任意一種即可。

    2. 不懂修仙,也可以零障礙的掌握這個教程。

    三、教程大綱

    四、凡人修仙對我的影響

    凡人修仙傳,特別是后期,有很多槽點。不過瑕不掩瑜,每一個IT人,都能在里面找到自己的影子。三體的黑暗森林法則,無法反駁,也無法實證,離我們太遙遠了。而修仙世界中的弱肉強食叢林法則,卻是現在看得見,摸得著的。每一位自學者,就是那些沒有任何依靠的散修,一路上,各種坑和陷阱...

    跟隨Rock,一起來修煉吧,徹底征服C/C++指針,快速提升自己的技術實力!
    ?

    ?五、指針練氣期

    5.1?指針零基礎快速入門

    我要去亂星海,尋找修仙洞府,那里靈氣旺盛,只是離我們中土大陸太遠了,相隔萬里,怎樣才能“瞬移”? 修仙界的“傳送陣”,你值得擁有!

    傳送陣就是修仙界中的“指針”。

    5.1.1 使用“指針”制作自己的傳送陣

    char LuanXingHai; // 亂星海, 修仙世界中一個靈氣非常充裕,特別適合修仙的大陸。// 讓亂星海,設置為H, 方式1: LuanXingHai = 'A'; printf("%c\n", LuanXingHai);// 假設我們沒有權限直接對 LuanXingHai 設置數據,就可以使用方式2: // 1. 記錄LuanXingHai的地址 int addr = &LuanXingHai; // 2. 做一個傳送陣,就是“指針” char* p; // 3. 把LuanXingHai的地址,賦值給傳輸陣 p = addr; //注意使用C++語言編譯器時,需要做強制類型轉換 // 4. 使用傳送陣(指針),傳送數據 *p = 'H';printf("%c\n", LuanXingHai);

    ?使用指針傳送陣,瞬移到修仙圣地-亂星海。

    5.1.2 傳送陣(指針)的兩種用法

    // 第一種用法:把指定目的地的數據讀出來,也就是“讀” char value = *p;// 第二種用法,把數據“傳輸”到指定的目的地,也就是“寫” *p = 'H';

    5.1.3?指針和地址的關系

    指針的值,本質上就是一個地址。

    指針,相當于一個傳送陣。這個傳送陣,需要先由修仙者甚至一個目的地,這個目的地,就是需要目標傳輸地址,也就是這個“指針”的值。

    5.1.4?指針的類型

    不同類型的傳送陣,能夠傳輸的物體不同,強行傳送,講導致“空間裂縫”,導致物體被毀。

    不同類型的指針,也只能傳輸特定類型的數據,強行傳送,可能導致數據損壞等不可預期的后果。

    int lingShi = 512; // 靈石,修仙界中的一種通用貨幣,相當于世俗社會的黃金 char * p = &lingShi; //C++編譯器需要做強制類型轉換 *p = 1; printf("%d", lingShi); // 在小端格式的計算機中,輸出 513

    特別注意,在C++編譯器中(文件的后綴為.cpp默認使用c++編譯器),不同類型的指針直接賦值,會編譯失敗,需要強制類型轉換,但是在很多C語言編譯器中,可以直接賦值。

    類型不匹配的指針,強行訪問,可能導致不可預期的后果!類似修仙界中的“空間裂縫”,非常危險!魔界的上古魔獸,就是從空間裂縫中入侵人間,導致生靈涂炭...

    5.1.5?指針的底層理解

    int lingShi = 100; // 靈石,修仙界中的一種通用貨幣,相當于世俗社會的黃金 int * p = &lingShi;printf("%d", *p); //需要連續訪問兩次內存

    5.2?指針的加法和減法

    ?我們一起在修仙界中的黑市逛一下,順便學會指針的加法和減法。

    指針加整數

    大步逛黑市,詢問價格:

    // 修仙界黑市中,1級到8級妖獸的價格 int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };// 逛黑市詢問妖獸的價格 int* p = &prices[0]; //prices; printf("%d\n", *p); //100p = p + 1; // p++; printf("%d\n", *p); // 200p = p + 2; printf("%d\n", *p); // 800

    ?小碎步逛黑市,詢問價格:

    // 修仙界黑市中,1級到8級妖獸的價格 int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };char* p2 = &prices[0]; //prices; printf("%d\n", *p2); // 100p2 = p2 + 1; // p++; printf("%d\n", *p2); // 0

    ?原因分析:

    ?結論:指針+1, 指向該指針的下一個“數據”。如果是char*指針,那么就前進一個字節,指針的值只加了1。如果是int*指針,那么就指向下一個整數,而一個整數是占4個字節的,所以指針的值,實際上被加了4.

    p = p + n;? ?// 指針p的值,增加了? n*sizeof(p指向的數據的數據類型)

    指針減整數

    大步后退查看價格

    // 修仙界黑市中,1級到8級妖獸的價格 int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };int* p1 = &prices[1]; //prices; printf("%d\n", *p1); //200p1 = p1 - 1; printf("%d\n", *p1); //100

    小碎步后退查看價格

    // 修仙界黑市中,1級到8級妖獸的價格 int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };char* p2 = &prices[1]; //prices; p2 = p2 - 1; printf("%d\n", *p2); // 0

    ?原因分析:

    ?p = p - n;? ?// 指針p的值,減少了? n*sizeof(p指向的數據的數據類型)

    指針減指針

    // 修仙界黑市中,1級到8級妖獸的價格 int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };int* p1 = &prices[0]; int* p2 = &prices[5]; printf("%d\n", p2 - p1); // 5char* p3 = &prices[0]; char* p4 = &prices[5]; printf("%d\n", p4 - p3); // 20

    ?指針減指針,結果為這兩個指針之間間隔了多少個“對應類型”的數據。

    指針的比較運算

    // 修仙界黑市中,1級到8級妖獸的價格 int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };for (int *p1 = prices; p1 < prices + 8; p1++) {printf("%d ", *p1); // 正向輸出各種價格 }printf("\n");for (int* p1 = prices+7; p1 >= prices; p1--) {printf("%d ", *p1); // 反向輸出各種價格 }

    指針的比較運算,是指針中存儲的“地址值”, 按照無符號整數的規則進行比較。

    總結

    以上是生活随笔為你收集整理的凡人修仙学指针-1的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。