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

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

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

3天內不再提示

一個簡單例子講清楚指針的應用

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:嵌入式ARM ? 2021-02-10 17:54 ? 次閱讀

很多人遇到指針就糊涂,搞不清到底指向什么,其實是你沒搞清楚 * 修飾誰,還有一些關鍵字修飾誰。

看下面的例子,定義一個無符號字符變量x,然后同時定義一個可以指向x的指針p,即可以將x的地址放到指針變量p里面,然后又定義了一個可以存放p地址的指針pp:

#include "stdio.h"int main(void){//無符號字符變量x,指向無符號字符變量類型的指針p,指向指針類型p的指針pp.unsigned char x,*p,**pp;        x=12;        p=&x;        pp=&p;//const是修飾指針指向的對象屬性,意思是指針kp只能指向一個const常量,而kp可以被修改指向不同的const常量,但是不能通過kp指針修改指向變量的值。int const *kp,k=20,kv=32;        kp=&k;        kp=&kv;//const是修飾指針mp,mp將指向固定的地址,因此在定義的時候就應該指定好該地址,之后無法修改該指針內的地址。int mv=14;int *const mp=&mv;//可以讓kp指向mv的地址,但是不能通過kp,修改mv的值;                kp=&mv;/*        總結:        const *p 表示*p是一個整體,即指針p指向的某個變量,而const修飾該變量;                        * const p表示const p是一個整體,const 修飾指針p,即指針p存放的地址不能變。        */printf("*p=%d
",*p);printf("**pp=%d
",**pp);printf(" p=%d
",p);printf("pp=%d
",pp);printf("pp=%d
",&pp);}
很多時候還會遇到const關鍵字,很多人不知道該如何結合,到底const修飾誰?
這里你可以將定義看成是從右到左的結合。

int const *kp;
int *const mp;

例如例子中的這兩個,你看好了,從右到左

int const (*kp);
int *(const mp);

第一個括號里是表示kp指針指向的某個變量,該變量是個const常量,不可變。
第二個是const直接修飾了指針mp,意思是指針存放的內容是不可變的,就是地址不可變。

*與&是一對逆操作,*的出現用于定義指針,在使用的時候用于通過指針找到指向的變量。

而&用于取出變量的地址。

在PC測試上,推薦一個C語言的IDE,是C語言入門圣經C primer plus上推薦的一款:Pelles C IDE

86b8d9bc-5f65-11eb-8b86-12bb97331649.png

如果想使用中文界面可以訪問下面這個中文鏈接:https://www.pellesc.cn/ 例如一個指向固定地址的指針,若想修改它指向的地址,那么會報錯

88bf8bca-5f65-11eb-8b86-12bb97331649.png

上面的報錯信息意思是賦值錯誤,'='的操作數有不兼容的類型'int *'和'int',分配到了固定的地址。該固定的地址是不可以被修改的。

另外需要注意,如果一個變量定義為指向常量的指針,那么該指針還是可以指向一個可變的變量,但是無法通過該指針修改該變量。該變量的屬性就是通過它操作指向的變量都當做不可修改常量看待。

報錯內容如下:

896c439c-5f65-11eb-8b86-12bb97331649.png


8cd76cc8-5f65-11eb-8b86-12bb97331649.png

最后奉上,注釋掉不合法的語句后的完整學習代碼
#include "stdio.h"
int main(void){//無符號整形變量x,指向無符號整形變量類型的指針p,指向指針類型p的指針pp.        unsigned int x,*p,**pp;        x=12;        p=&x;        pp=&p;        printf("通過指針p,打印x的值12:*p=%d
",*p);        printf("通過指針pp,打印pp存放的指針p指向的變量x的值:**pp=%d
",**pp);        printf("打印變量x的地址:        &x=%p
",&x);        printf("打印指針p存放的變量x的地址:p=%p
",p);        printf("打印指針p的地址:        pp=%p
",pp);        printf("打印指針變量pp的地址:        pp=%p
",&pp);        printf("--------------------------------------------
");//const是修飾指針指向的對象屬性,意思是指針kp只能指向一個const常量,而kp可以被修改指向不同的const常量,但是不能通過kp指針修改指向變量的值。        int const *kp,k=20,kv=32;        kp=&k;        printf("通過指針kp訪問固定的數k,*kp=%d
",*kp);        kp=&kv;        printf("通過指針kp訪問固定的數kv,*kp=%d
",*kp);//        通過kp不可以修改指向地址存放變量的固定值。//        *kp=21;


//const是修飾指針mp,mp將指向固定的地址,因此在定義的時候就應該指定好該地址,之后無法修改該指針內的地址。        int mv=14,mx=24;        int *const mp=&mv;        printf("通過存放固定地址的指針訪問指向的變量mv=14:*mp=%d
",*mp);        *mp=15;        printf("通過存放固定地址的指針修改指向的變量mv=15:*mp=%d
",*mp);//可以讓kp指向mv的地址,但是不能通過kp,修改mv的值;                kp=&mx;        printf("將指向固定數據的指針kp指向一個可以修改的變量mx=24,*kp=%d
",*kp);//        試圖通過指向固定常量的指針kp修改指向的可修改變量mx時候,失敗了。//        *kp=25;
//因為mp指針指向的地址是const類型,所以下面的操作是非法的,會報錯。        //        mp=&24;
/*        總結:        const *p 表示*p是一個整體,即指針p指向的某個變量,而const修飾該變量;                        * const p表示const p是一個整體,const 修飾指針p,即指針p存放的地址不能變。        */}

責任編輯:xj

原文標題:指針的應用,一個簡單例子講清楚你多年的糊涂

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。


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

    關注

    1

    文章

    480

    瀏覽量

    70551
  • CONST
    +關注

    關注

    0

    文章

    44

    瀏覽量

    8159

原文標題:指針的應用,一個簡單例子講清楚你多年的糊涂

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    篇文章講清楚HDMI 2.1的

    HDMI 2.1是高清多媒體接口(HDMI)的最新版本,它帶來了系列顯著的技術升級和新功能。
    的頭像 發表于 11-28 15:56 ?503次閱讀

    指針數組和二維數組有沒有區別

    ] = { "hello", "world", "total" }; return 0;} 從后面的初始化方式可以看出,他們好像樣,里面都保存了三字符串。 想要搞清楚他們的區別,還得看下他們在內存中的排布
    的頭像 發表于 11-24 11:12 ?143次閱讀

    C語言指針運算符詳解

    在C語言中,當你有指向數組中某個元素的指針時,你可以對該指針執行某些算術運算,例如加法或減法。這些運算可以用來遍歷數組中的元素,如ptr[i]等價于*(ptr + i)。然而,如果
    的頭像 發表于 10-30 11:16 ?243次閱讀

    電容的“通交流、阻直流”,終于有人講清楚了!

    “通交阻直”是電容重要的特性之,即電容可以交流電導通,但直流電阻斷。 這是為什么呢? 從理論上來講,電荷是根本不能在電容中流動的。 因為在平行板電容上電后,塊板帶正電,另塊板帶負電,在兩快板
    發表于 10-09 11:43

    面試常考+1:函數指針指針函數、數組指針指針數組

    在嵌入式開發領域,函數指針指針函數、數組指針指針數組是些非常重要但又容易混淆的概念。理解它們的特性和應用場景,對于提升嵌入式程序的效率
    的頭像 發表于 08-10 08:11 ?833次閱讀
    面試常考+1:函數<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數、數組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數組

    阿里云設備的物模型數據里面始終沒有值是為什么?

    如上圖,不知道講清楚沒有。 IG502自定義TOPIC 上發到阿里云沒問題。采用阿里云物模型的格式來上發就不行。請大佬指教!
    發表于 07-24 07:49

    面試中的高頻問題:指針函數與函數指針,你能完美應對嗎?

    直覺得C語言較其他語言最偉大的地方就是C語言中的指針,有些人認為指針簡單,而有些人認為指針很難,當然這里的對
    的頭像 發表于 06-22 08:11 ?1705次閱讀
    面試中的高頻問題:<b class='flag-5'>指針</b>函數與函數<b class='flag-5'>指針</b>,你能完美應對嗎?

    簡單的分頻器電路分享

    這是簡單的分頻器電路,該電路的優點是電路小,它僅使用晶體管和其他幾個組件。
    的頭像 發表于 06-10 15:55 ?1356次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>簡單</b>的分頻器電路分享

    電流的方向與電流表的指針偏轉方向是否致?

    電流的方向與電流表指針的偏轉方向之間的關系是電學測量中的基本問題。
    的頭像 發表于 05-07 17:07 ?4382次閱讀

    M8連接器對使用環境有什么要求,篇文章講清楚!

    M8連接器對使用環境有什么要求?德索精密工業,專業生產M8連接器十八年,歡迎前來采購M8相關產品。任何產品在使用中,或多或少對使用環境都有定的要求,由于統物體在不同環境中的技術機能也會發生改變
    的頭像 發表于 03-18 16:39 ?372次閱讀
    M8連接器對使用環境有什么要求,<b class='flag-5'>一</b>篇文章<b class='flag-5'>講清楚</b>!

    函數指針與回調函數的應用實例

    通常我們說的指針變量是指向整型、字符型或數組等變量,而函數指針是指向函數。 函數指針可以像
    的頭像 發表于 03-07 11:13 ?400次閱讀
    函數<b class='flag-5'>指針</b>與回調函數的應用實例

    怎么理解指針指針

    怎么理解指針指針?其實這個概念并不難,只是把它放到實際應用中,容易造成困擾。
    的頭像 發表于 02-23 16:46 ?1174次閱讀
    怎么理解<b class='flag-5'>指針</b>的<b class='flag-5'>指針</b>?

    干貨!收藏!講清楚數據治理到底是什么?

    數據治理的兩目標:一個是提質量,一個是控安全。通過業務流程優化,規范數據從產生、處理、使用到銷毀的整個生命周期,使得數據在各階段、各流程環節安全可控,合規使用。 數據治理治的是“數據”嗎? 數據
    的頭像 發表于 02-01 10:40 ?469次閱讀
    干貨!收藏!<b class='flag-5'>一</b>文<b class='flag-5'>講清楚</b>數據治理到底是什么?

    工業級連接器如何做到高抗沖擊性?選款定要了解這幾點

    連接器知識分享工業級連接器多用在工廠、車載、戶外等復雜場景下,因而面臨沖擊等應力影響的概率極高。工業級連接器如何做到高抗沖擊性,確保高可靠連接呢?這篇文章講清楚。工業級連接器如何做到高抗沖擊性?LP
    的頭像 發表于 01-06 08:13 ?369次閱讀
    工業級連接器如何做到高抗沖擊性?選款<b class='flag-5'>一</b>定要了解這幾點

    函數指針指針函數是不是東西?

    函數指針的本質是指針,就跟整型指針、字符指針樣,函數指針指向的是
    的頭像 發表于 01-03 16:35 ?526次閱讀
    函數<b class='flag-5'>指針</b>和<b class='flag-5'>指針</b>函數是不是<b class='flag-5'>一</b><b class='flag-5'>個</b>東西?
    主站蜘蛛池模板: 美女胸被男子强捏视频| 99久久免费热在线精品| 伊人久久亚洲综合天堂| 伊人久久天堂| 99国产小视频| 国产精品亚洲电影久久成人影院 | 俄罗斯人与动ZOOZ| 国产免费高清mv视频在线观看| 精品国产乱码久久久久久乱码 | 夜色88V精品国产亚洲AV| 18禁三级黄| 国产成人免费| 久久视频这里只精品99热在线| 欧美亚洲天堂网| 亚洲午夜精品AV无码少妇| 国产精品久免费的黄网站| 妈妈的职业3完整版在线播放 | 粉色视频午夜网站入口| 伦理片飘花免费影院| 亚洲精品不卡视频| www黄色大片| 国产人在线成免费视频| 女人张腿让男人桶免费| 亚洲欧美日韩人成| 成人在线免费视频观看| 免费在线视频成人| 在线播放国产视频| 国产亚洲AV精品无码麻豆| 青草久久久| 97精品免费视频| 精品免费久久久久久影院| 翁公与小莹在客厅激情| 成片在线看一区二区草莓| 乐乐亚洲精品综合影院| 亚洲精品久久久久AV无码| 国产精品99精品无码视亚| 日本无修肉动漫在线观看| 99久久久无码国产精品AAA| 麻豆久久国产亚洲精品超碰热| 亚洲欧美一区二区三区四区| 国产精品一区二区亚瑟不卡|