亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

水滴石穿C語言之正確使用const

2019-11-17 05:07:02
字體:
來源:轉載
供稿:網友
  基本解釋

  const是一個C語言的要害字,它限定一個變量不答應被改變。使用const在一定程度上可以提高程序的健壯性,另外,在觀看別人代碼的時候,清楚理解const所起的作用,對理解對方的程序也有一些幫助。

  雖然這聽起來很簡單,但實際上,const的使用也是c語言中一個比較微妙的地方,微妙在何處呢?請看下面幾個問題。

  問題:const變量 & 常量

  為什么我象下面的例子一樣用一個const變量來初始化數組,ANSI C的編譯器會報告一個錯誤呢?

const int n = 5;
int a[n];
  答案與分析:

  1)、這個問題討論的是“常量”與“只讀變量”的區別。常量肯定是只讀的,例如5, “abc”,等,肯定是只讀的,因為程序中根本沒有地方存放它的值,當然也就不能夠去修改它。而“只讀變量”則是在內存中開辟一個地方來存放它的值,只不過這個值由編譯器限定不答應被修改。C語言要害字const就是用來限定一個變量不答應被改變的修飾符(Qualifier)。上述代碼中變量n被修飾為只讀變量,可惜再怎么修飾也不是常量。而ANSI C規定數組定義時維度必須是“常量”,“只讀變量”也是不可以的。

  2)、注重:在ANSI C中,這種寫法是錯誤的,因為數組的大小應該是個常量,而const int n,n只是一個變量(常量 != 不可變的變量,但在標準C++中,這樣定義的是一個常量,這種寫法是對的),實際上,根據編譯過程及內存分配來看,這種用法本來就應該是合理的,只是ANSI C對數組的規定限制了它。

  3)、那么,在ANSI C 語言中用什么來定義常量呢?答案是enum類型和#define宏,這兩個都可以用來定義常量。

更多文章 更多內容請看C/C++進階技術文檔專題,或
  問題:const變量 & const 限定的內容

  下面的代碼編譯器會報一個錯誤,請問,哪一個語句是錯誤的呢?

typedef char * pStr;
char string[4] = "abc";
const char *p1 = string;
const pStr p2 = string;
p1++;
p2++;
  答案與分析:

  問題出在p2++上。

  1)、const使用的基本形式: const char m;

  限定m不可變。

  2)、替換1式中的m, const char *pm;

  限定*pm不可變,當然pm是可變的,因此問題中p1++是對的。

  3)、替換1式char, const newType m;

  限定m不可變,問題中的charptr就是一種新類型,因此問題中p2不可變,p2++是錯誤的。

  問題:const變量 & 字符串常量

  請問下面的代碼有什么問題?

char *p = "i'm hungry!";
p[0]= 'I';
  答案與分析

  上面的代碼可能會造成內存的非法寫操作。分析如下, “i'm hungry”實質上是字符串常量,而常量往往被編譯器放在只讀的內存區,不可寫。p初始指向這個只讀的內存區,而p[0] = 'I'則企圖去寫這個地方,編譯器當然不會答應。

  問題:const變量 & 字符串常量2

  請問char a[3] = "abc" 合法嗎?使用它有什么隱患?

  答案與分析

  在標準C中這是合法的,但是它的生存環境非常狹??;它定義一個大小為3的數組,初始化為“abc”,,注重,它沒有通常的字符串終止符'/0',因此這個數組只是看起來像C語言中的字符串,實質上卻不是,因此所有對字符串進行處理的函數,比如strcpy、PRintf等,都不能夠被使用在這個假字符串上。

  問題5:const & 指針

  類型聲明中const用來修飾一個常量,有如下兩種寫法,那么,請問,下面分別用const限定不可變的內容是什么?

  1)、const在前面

const int nValue; //nValue是const
const char *pContent; //*pContent是const, pContent可變
const (char *) pContent;//pContent是const,*pContent可變
char* const pContent; //pContent是const,*pContent可變
const char* const pContent; //pContent和*pContent都是const
  2)、const在后面,與上面的聲明對等

int const nValue; // nValue是const
char const * pContent;// *pContent是const, pContent可變
(char *) const pContent;//pContent是const,*pContent可變
char* const pContent;// pContent是const,*pContent可變
char const* const pContent;// pContent和*pContent都是const
  答案與分析:

  const和指針一起使用是C語言中一個很常見的困惑之處,在實際開發中,非凡是在看別人代碼的時候,經常會因為這樣而不好判定作者的意圖,下面講一下我的判定原則:

  沿著*號劃一條線,const和誰在一邊,那么誰就是const,即const限定的元素就是它。你可以根據這個規則來看上面聲明的實際意義,相信定會一目了然。


  另外,需要注重:對于const (char *) ; 因為char *是一個整體,相當于一個類型(如 char),因此,這是限定指針是const。

更多文章 更多內容請看C/C++進階技術文檔專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品专区h在线观看| 国产日韩欧美自拍| 国模叶桐国产精品一区| 国产亚洲欧洲在线| 亚洲一区二区三区四区在线播放| 欧洲一区二区视频| 最近2019年日本中文免费字幕| 一区二区三区在线播放欧美| 日韩激情av在线播放| 亚洲国产精品资源| 亚洲社区在线观看| 欧美www在线| 伊人伊成久久人综合网站| 国产精品高潮呻吟久久av无限| 日韩电影中文字幕在线观看| 久久久亚洲成人| 久久天天躁狠狠躁老女人| 26uuu另类亚洲欧美日本一| 亚洲欧美一区二区三区情侣bbw| 日韩av网站导航| yellow中文字幕久久| 亚洲区中文字幕| 国产精品极品尤物在线观看| 中文字幕亚洲字幕| 久久久精品2019中文字幕神马| 欧美高跟鞋交xxxxxhd| 主播福利视频一区| 91精品国产高清久久久久久91| 亚洲老司机av| 久久夜精品va视频免费观看| 久久天天躁狠狠躁夜夜躁| 精品视频在线播放| 欧美一级淫片丝袜脚交| 国产精品视频男人的天堂| 精品美女永久免费视频| 91视频-88av| 国产婷婷成人久久av免费高清| 国产女人精品视频| 亚洲深夜福利在线| 亚洲精品视频免费在线观看| 欧美精品情趣视频| 亚洲精品98久久久久久中文字幕| 日本不卡高字幕在线2019| 91精品视频免费观看| 日韩中文字幕不卡视频| 欧美成年人视频网站欧美| 欧美俄罗斯性视频| 日韩欧亚中文在线| 日本欧美国产在线| 精品国产一区二区在线| 夜夜嗨av色综合久久久综合网| 国产在线精品播放| 日韩中文字幕亚洲| 欧美大片在线影院| 国产精品入口尤物| 亚洲一区二区久久久| 国产精品伦子伦免费视频| 国产精品电影一区| 深夜精品寂寞黄网站在线观看| 538国产精品一区二区免费视频| 欧美日韩加勒比精品一区| 久久久国产精品视频| 欧美激情亚洲另类| 成年无码av片在线| 亚洲激情在线观看视频免费| 亚洲欧美另类人妖| 91成品人片a无限观看| 亚洲影视九九影院在线观看| 2018中文字幕一区二区三区| 91精品久久久久久久久不口人| 成人网页在线免费观看| 国产精品ⅴa在线观看h| 曰本色欧美视频在线| 日韩av一区二区在线观看| 欧美一区三区三区高中清蜜桃| 国产欧美日韩亚洲精品| 亚洲激情在线视频| 欧美成人激情视频| 久久免费精品视频| 欧洲成人性视频| 亚洲人成毛片在线播放| 欧美黑人一级爽快片淫片高清| 国产精品国内视频| 久久精品男人天堂| 国产精品亚洲视频在线观看| 综合久久五月天| 国产成人短视频| 久久久久久久久久久久久久久久久久av| 久久国产精品免费视频| 亚洲bt欧美bt日本bt| 欧美精品情趣视频| 日韩中文字幕网址| 国产亚洲精品成人av久久ww| 精品女同一区二区三区在线播放| 久久精品国产视频| 国产精品网站视频| 国外成人免费在线播放| 亚洲成人av片| 日本中文字幕不卡免费| 亚洲伊人第一页| 78m国产成人精品视频| 日韩电影中文字幕| 亚洲国产欧美一区| 久久手机免费视频| 疯狂做受xxxx高潮欧美日本| 国产精品一区二区在线| 欧美激情中文字幕在线| 久久视频免费观看| 国产精品一区专区欧美日韩| 亚洲精品久久久久| 亚洲自拍小视频| 中文在线不卡视频| 亚洲xxx视频| 丁香五六月婷婷久久激情| 精品人伦一区二区三区蜜桃免费| 国产精品电影久久久久电影网| 色悠久久久久综合先锋影音下载| 欧美日韩国产麻豆| 亚洲欧美国产精品久久久久久久| 疯狂做受xxxx欧美肥白少妇| 欧美亚洲成人免费| 亚洲人成网7777777国产| 97高清免费视频| 亚洲二区在线播放视频| 成人免费视频在线观看超级碰| 成人a在线观看| 国产视频精品久久久| 国产精品观看在线亚洲人成网| 欧美专区在线观看| 国产精品久久久久久久电影| 91精品久久久久久久久久另类| 欧美激情videoshd| 欧美日韩国产123| 九九热最新视频//这里只有精品| 国产欧美一区二区白浆黑人| 97视频在线观看免费| 亚洲在线观看视频| 国产视频一区在线| 亚洲高清久久网| 日韩高清a**址| 日韩在线高清视频| 深夜福利国产精品| 91最新在线免费观看| 亚洲美女av在线播放| 国产精品99久久99久久久二8| 精品久久久香蕉免费精品视频| 伊人伊人伊人久久| 91久久久久久久久久久久久| 国产精品极品尤物在线观看| 一区二区在线视频播放| 欧美电影免费播放| 亚洲成人激情图| 国产精品欧美久久久| 久久影视电视剧免费网站清宫辞电视| 国产精品亚洲综合天堂夜夜| 91免费人成网站在线观看18| 日韩av影片在线观看| 日韩视频欧美视频| 日本高清视频一区| 久久夜精品va视频免费观看| 日韩中文字幕不卡视频| 精品久久久久久久久国产字幕| 播播国产欧美激情| 色综合色综合网色综合|