色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言指針知識科普

CHANBAEK ? 來源:落木青云 ? 作者:一顆糯米 ? 2023-04-08 11:28 ? 次閱讀

指針,初學者的夢魘

對于初學者,在學習C語言的過程中每每提到指針都會讓無數人聞風散膽吧。 因為在我們學C語言的時候很多人(包括學長或老師)可能都會告訴我們指針是C語言中最難的一部分,所以導致還沒開始接觸就勸退了一批人。 確實,C語言的精華也在于此,這也是它之所以長盛不衰的原因。 很多時候初學者之所以害怕使用指針是因為害怕去嘗試,其實如果在初學階段愿意去嘗試,敢于去修改bug,這時你就會發現指針學起來也簡單多了。 你是不是因為害怕搞混*(p+1)*p+1,const int *pint *const p,**p,&p 等看起來就讓人蒙圈的變量、符號,并且怎么記都似乎記不住? 那就應該多去練習! 在之前的內容中我也一直沒有寫這部分知識點,因為我自己覺得指針只要去使用它確實是沒難度的,另外一個原因是,這種沒難度似乎又只可意會不可言傳,自己總結出來的話總是沒有書籍中寫的清晰,每個人基礎不一樣同樣的話對不同人理解的程度又不同,所以這里還是希望初學者自己主動把這塊硬骨頭啃下去,我就提點我自己認證之內的技巧供大家參考。

從定義出發去理解指針

這里對于指針的官方定義我就不做搬運了,所有講解C語言的書本都少不了對指針的定義。 如果需要權威的說明可以查看《C Primer Plus》這本經典書籍,其中還包含很多細節說明和舉例應用,把它作為參考書再好不過了,我想我能描述出來的文字絕對比不上他書中寫的專業詳細。 指針最簡單的概念就是:它是程序運行過程中的一個內存地址。 至于一些針對指針變量衍生出來的奇奇怪怪的的表達式實質上就是運算符優先級與結合規律的基礎內容。 如果區分不出來可以先復習運算符部分知識。 我們都知道所有程序要跑起來都需要先加載到內存中,程序運行所需的數據都會根據程序指令進行動態分配。 很多朋友平時可能會說,哎呀,我的電腦手機)又卡死啦,這時候很大可能性就是你的電腦或手機內存被占滿了,而不是硬盤(存儲器)沒有足夠空間。 當然如果你的磁盤空間不夠,然后運行內存也消耗過多那活該你的機器被卡。

學習時該怎么樣避免踩坑

還是哪句話,多練習把坑踩平自然而就不會再踩坑了,這肯定是一句廢話,學啥技術都可以這么說。 我的建議就是善用編譯器的調試功能printf()函數,現在的編譯器功能都是越來越完善的,在初學階段使用程序調試功能可以讓你少走很多彎路,結合打斷點調試程序,單步執行,觀察變量信息,哪里對點哪里,調多了你編程都會越來越有手感。 當然,等你有一定經驗之后,在項目開發過程中還是希望你不要過多的依賴調試功能。 希望你對程序能夠熟練到通過看代碼就能發現邏輯是否正確。 至于初學者嘛,此時不用你還想啥時候用呢! 另外一個很關鍵的的技巧就是多打印信息,當然也是要你到處都打印,一個變量都不落下的打印,如果你不想時不時的調試代碼,那就選擇這種方式,選擇在關鍵的地方對關鍵的數據進行輸出,這樣你直接在控制或者串口助手中就能及時發現問題。 當然采用這種方式在開發階段還是比較實用的,如果在巧妙的結合一些宏定義語句進入功能調試的差不多之后就整體關閉輸出就好了,即使日后出現bug需要再調試處理起來也是非常方便。 所以以上兩種方法用于練習指針操作對初學者來說也是再好不過了,總之我曾經就是這么練習的。

Keil中怎么了解指針

Keil和常用的C語言編譯器VS一樣具備調試功能,所以在你不會的時候也是可以采用調試的辦法仿真程序運行結果來達到學習指針的目的。 下面舉一個簡單的例子來說明。

隨便寫一個邏輯上跑得通的例子程序,編譯沒問題之后點擊debug即可。

#include  
#include  

unsigned int var1 = 0;
unsigned int idata var2[] = {1,2,3,4};
unsigned int data var3[] = {5,6,7};
unsigned int var4[] = {8,9};
unsigned int code var5[] = {10,11,12};

unsigned int data *var6;
unsigned int *var7;
unsigned int *var8;
unsigned int *var9;
unsigned int *var10;
//unsigned int *var11;

void main(void)
{
    var1 = 100;
    var2[0] = 101;   
    var3[0] = 102;
    var4[0] = 103;
//    va5[0] = 104;//這是一條錯誤語句,存放于flash中的數據為只讀
    
    var6 = &var1;
    var7 = &var2;
    var8 = &var3;
    var9 = &var4;
    var10 = &var5;
}

在接下來彈出的窗口中就可以查看,哪些是指針的地址,以及其對應的值,都可以看的一目了然。

圖片
匯編中內存信息

這個辦法學起來難度不比單純的敲代碼更有意義嗎,即可以從底層了解單片機執行原理又可以了解代碼的執行過程,我感覺這應該不會那么無聊吧。 單片機只是一種微型的計算機放大到開發計算機程序也是一樣的道理吧。

如果底層代碼理解起來有一定的難度也可以添加變量到觀察窗口進行單步測試,這樣也一樣直觀明了。

圖片
變量觀察窗口

當然還有很多方法進行查看指針變量的變化過程,這里只是舉了一個非常簡單的例子,初學者完全可以充分發揮自己的動手能力探索自己的方法。 如果有自己想法歡迎留言或私信交流。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3037

    瀏覽量

    74150
  • C語言
    +關注

    關注

    180

    文章

    7608

    瀏覽量

    137151
  • 程序
    +關注

    關注

    117

    文章

    3792

    瀏覽量

    81171
  • 函數
    +關注

    關注

    3

    文章

    4338

    瀏覽量

    62762
  • 指針
    +關注

    關注

    1

    文章

    480

    瀏覽量

    70583
收藏 人收藏

    評論

    相關推薦

    C語言基礎知識科普

    C語言是單片機開發中的必備基礎知識,本文列舉了部分STM32學習中比較常見的一些C語言基礎知識
    發表于 07-21 10:58 ?1911次閱讀

    C語言指針知識科普

    指針C語言最重要也是最難理解的部分,它在我們平時的工作中無處不在。
    發表于 09-26 10:26 ?488次閱讀

    C語言指針講解,趕快收藏!

    指針對于C來說太重要。然而,想要全面理解指針,除了要對C語言有熟練的掌握外,還要有計算機硬件以及操作系統等方方面面的基本
    發表于 11-15 10:15 ?775次閱讀

    C語言入門教程-指針

    指針C語言中,指針被廣泛使用。所以要想完整地掌握C語言,您需要對
    發表于 07-29 11:30 ?673次閱讀

    C語言指針電子教程

    本資料是一份不錯的關于C語言指針的電子教程,希望對大家有所幫助... 指針簡介 指針C
    發表于 07-30 16:00 ?77次下載

    C語言指針函數和函數指針詳細介紹

    C語言指針函數和函數指針詳細介紹。。。。。。。
    發表于 03-04 15:27 ?5次下載

    c語言函數指針定義,指針函數和函數指針的區別

     往往,我們一提到指針函數和函數指針的時候,就有很多人弄不懂。下面就由小編詳細為大家介紹C語言中函數指針
    發表于 11-16 15:18 ?3629次閱讀

    C語言的精髓——指針詳解

    C語言的精髓——指針詳解
    發表于 11-30 14:43 ?17次下載

    基于C語言中指針的基本用法解析

    C語言中其它的知識都學得可以,唯獨指針搞不懂。如果是這樣,我可以很負責的告訴你,對于這門編程語言,你等于是沒學。所以學好
    的頭像 發表于 01-09 15:12 ?4807次閱讀

    為什么C語言要引入指針_引入指針的好處是什么

    讓你知道什么是 C語言 指針,為什么用指針,從此不在害怕指針
    的頭像 發表于 07-28 10:12 ?2.2w次閱讀

    指針才是C語言的精髓

    文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數據總結前言指針對于很多初學C語言的人來說是一個十分復雜比較抽象的知識,今天就帶大家一起來揭開
    發表于 12-09 13:06 ?14次下載
    <b class='flag-5'>指針</b>才是<b class='flag-5'>C</b><b class='flag-5'>語言</b>的精髓

    C語言-內聯函數、遞歸函數、指針函數

    這篇文章介紹C語言的內聯函數、遞歸函數、函數指針指針函數、局部地址、const關鍵字、extern關鍵字等知識點;這些
    的頭像 發表于 08-14 10:03 ?1701次閱讀

    C語言進階】C語言指針的高階用法

    C語言進階】C語言指針的高階用法
    的頭像 發表于 08-31 13:24 ?2352次閱讀

    C語言中的懸空指針和野指針是什么意思?

    提起C語言大部分開發者很自然就會想到指針二字,沒錯,作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針中的兩個特有名詞
    的頭像 發表于 02-09 17:20 ?1116次閱讀

    詳解C語言指針底層基本原理

    說到指針,估計還是有很多小伙伴都還是云里霧里的,有點“知其然,而不知其所以然”。但是,不得不說,學了指針C語言才能算是入門了。指針
    的頭像 發表于 04-06 10:43 ?1285次閱讀
    主站蜘蛛池模板: 国产AV无码成人黄网站免费 | 37大但人文艺术A级都市天气 | 99成人在线视频| 国产成人精品亚洲线观看| 口工漫画r18全彩啪啪| 她也色在线视频站| 99久久免费精品国产| 精品国产免费第一区二区| 肉肉描写很细致的黄文| 7723日本高清完整版在线观看| 俄罗斯兽交XXXXX在线| 国产精品亚洲二线在线播放| 麻豆国产精品AV色拍综合| 亚洲综合色婷婷在线影院| 好男人在线高清WWW免费观看 | 三级中国免费的| beeg xxx日本老师| 女性露出奶头流出精子| 在线免费观看毛片| 国内精品久久久久久西瓜色吧| 日本性xxx| Chineseman瘦老头77| 美女被抽插到哭内射视频免费| 在镜头里被CAO翻了H| 精品国产乱码久久久久久软件 | 男男免费看| YY600800新视觉理论私人| 欧美阿v在线免播播放| 99精品视频免费观看| 麻婆豆腐传媒视频免费| 2023国产精品一卡2卡三卡4卡| 妈妈的朋友5在线观看免费完整版中文 | 美女脱精光让男生桶下面| 在线观看视频国产| 恋夜直播午夜秀场最新| 中文字幕亚洲第一| 美女白虎穴| 扒开女人下面使劲桶动态图| 欧美激情一区二区三区AA片| YIN荡的老师系列第6部分视频| 色噜噜视频影院|