国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    484

    瀏覽量

    71843
  • CONST
    +關注

    關注

    0

    文章

    45

    瀏覽量

    8761

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    智能保溫杯CE認證辦理指南

    隨著智能穿戴與智能家居產品的發展,智能保溫杯逐漸成為跨境電商熱門產品。若產品出口至 歐盟 市場,必須符合CE認證要求,否則無法合法銷售。 那么,智能保溫杯需要做哪些CE認證項目?下面講清楚
    的頭像 發表于 02-27 16:08 ?56次閱讀
    智能保溫杯CE認證辦理指南

    MTBF測試對電子產品的重要性

    MTBF 不只是?“小時數”,它是產品可靠性的身份證,直接決定能不能賣、好不好賣、賣完穩不穩。下面用最直白的邏輯講清楚它為什么重要。
    的頭像 發表于 02-25 11:28 ?70次閱讀
    MTBF測試對電子產品的重要性

    指針與函數詳解

    = a + b; return(p); } 這是簡單指針函數的例子,運行結果如下,本文代碼在VScode平臺運行,使用方法《
    發表于 01-23 06:02

    什么是新能源移動充電車?篇文章講清楚它的類型和原理

    隨著全球新能源汽車市場高速發展,傳統的固定充電基礎設施在城市高密度區域、老舊小區以及配電網承載力方面面臨著嚴峻挑戰。在此背景下,新能源 移動充電車 作為種創新的解決方案快速崛起,其核心優勢在于
    的頭像 發表于 01-20 14:36 ?519次閱讀

    壓接款連接器優勢有哪些?講清楚

    突破接線瓶頸,凌科電氣M20系列壓接款工業連接器全新上市——以卓越的可靠性與極致便捷,重新定義工業連接標準。
    的頭像 發表于 01-06 13:57 ?790次閱讀

    函數指針指針函數的區別

    在學習arm過程中發現這“指針函數”與“函數指針”容易搞錯,所以今天,我自己想次把它搞清楚,找了些資料,和大家的
    發表于 12-12 06:34

    企業為什么開始換用 RFID智能硬盤柜?選型標準講清楚

    在企業的數據資產管理體系中,硬盤直是非常特殊的類介質。它體積小、價值高、存儲密度大,旦丟失或流轉不規范,風險遠高于紙質檔案。本文結合業內廣泛采用斯科兩款機型——CK-GYP?和?CK-GYP1,把企業在選型時真正需要關注的
    的頭像 發表于 12-10 09:38 ?267次閱讀

    單模 vs 多模:光纖選擇終極指南

    很多朋友在組建網絡時都會遇到核心問題:我到底該用多模光纖還是單模光纖?今天,小易就為大家徹底講清楚這兩者的區別,幫助您做出最經濟、高效的選擇。
    的頭像 發表于 12-08 14:12 ?958次閱讀
    單模 vs 多模:光纖選擇終極指南

    別再迷糊了!Linux交叉編譯到底是啥?講清楚

    很多工程師第次聽到“交叉編譯”這4字時,腦袋里往往會冒出兩個字: 抽象 。 明明寫代碼寫得好好的,為啥還要搞“交叉”?編譯不就是把源代碼變成可執行程序嗎,難道還會繞幾個彎? 別
    的頭像 發表于 12-03 16:28 ?992次閱讀
    別再迷糊了!Linux交叉編譯到底是<b class='flag-5'>個</b>啥?<b class='flag-5'>一</b>文<b class='flag-5'>講清楚</b>

    講清楚TVS二極管的作用和分類

    TVS二極管(Transient Voltage Suppression Diode,瞬態電壓抑制二極管)是種專門用于抑制電路中瞬態過電壓的半導體器件,其核心作用是通過快速響應和低鉗位電壓保護
    的頭像 發表于 11-18 16:41 ?2251次閱讀
    <b class='flag-5'>一</b>文<b class='flag-5'>講清楚</b>TVS二極管的作用和分類

    講清楚線性霍爾靈敏度和輸出關系

    線性霍爾靈敏度與輸出范圍的關系解析 、核心定義與物理基礎 靈敏度(Sensitivity) 線性霍爾傳感器的靈敏度(單位:mV/mT 或 mV/G)表示單位磁場強度變化時輸出電壓的變化量。例如
    的頭像 發表于 11-18 16:38 ?931次閱讀

    工業級防爆型PDA手持終端(化工/石油/礦場等場景)的實操指南

    今天講防爆型PDA手持終端,主要會講到:為什么要用防爆PDA、它們到底怎么防爆、要看哪些證書與參數、不同場景的選型與落地注意點、以及采購/驗收/運維清單”都會盡量講清楚
    的頭像 發表于 11-04 15:02 ?556次閱讀
    工業級防爆型PDA手持終端(化工/石油/礦場等場景)的實操指南

    阿里云設備的物模型數據里面始終沒有值是哪里的問題?

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

    文了解什么是 BQB 認證

    講清楚、什么是BQB認證?BQB是BluetoothQualificationBody的縮寫,即“藍牙資格認證”。它是由**藍牙技術聯盟(BluetoothSI
    的頭像 發表于 07-18 14:53 ?1882次閱讀
    <b class='flag-5'>一</b>文了解什么是 BQB 認證

    講清楚芯片的分類-多個維度

    芯片作為現代電子設備的核心組件,其分類方式多樣,以下從功能、應用領域、制造工藝、集成度、設計架構、用途、數據類型、工作方式、材料及封裝形式十維度進行詳細闡述: 、按功能分類 1. 處理器芯片
    的頭像 發表于 05-06 15:04 ?6312次閱讀