最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于c語(yǔ)言指針的兩處小tip分享

 更新時(shí)間:2013年05月15日 09:51:48   作者:  
本篇文章是對(duì)c語(yǔ)言中指針的兩處小tip進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

1:常量指針與指針常量

常量指針與指針常量名字很接近,但是兩者區(qū)別很大。
常量指針是指指向常量的指針,例如:char const *st[4]="str";或者使用下面的方法,效果是一樣的:const char *st[4]="str"; 它聲明了一個(gè)指針變量,這個(gè)指針指向了一個(gè)常量字符串,但是由于指向的內(nèi)存空間是常量,因此該地址的內(nèi)容是不能修改的,例如:*st="no"; //這是不行的,因?yàn)閮?nèi)存空間的內(nèi)容不能修改st="ok"; //這是可以的,雖然指向的內(nèi)存內(nèi)容不能修改,但是指針的指向是可以修改的。
指針常量是指一個(gè)指向固定內(nèi)存單元的指針,其內(nèi)容可以修改,但是不能改變指向的位置,例如:char *const st[4]="str";*st="ok"; //這是可以的,因?yàn)橹赶蛭恢玫膬?nèi)容可以修改。st="no"; //這樣行不通,因?yàn)橹羔樖遣荒芨淖冎赶蛭恢?,即如果初始化為地?X8000,那么它只能指向這個(gè)位置,不能改變,但是0X8000的內(nèi)容是可以改變的。

char *s = "abcde";
s[0] = '1';//此句在運(yùn)行時(shí)出錯(cuò)

如下是可以的:

char s[] = "abcde";
s[0] = '1';

  
因?yàn)椋?/STRONG>

字符串常量是不能改的,編譯后是放到只讀內(nèi)存(靜態(tài)存儲(chǔ)區(qū))中的;

char[]和char*在很多地方可以通用,但是有個(gè)微妙的關(guān)系,那就是頭指針相同;

因?yàn)椤巴ㄟ^(guò)指針修改字符串常量的行為”是未定義的,上次就有個(gè)人問(wèn)"為什么上述代碼在TC下不報(bào)錯(cuò)而在VC6.0下報(bào)錯(cuò)"。不過(guò),現(xiàn)在大多實(shí)現(xiàn)把常量字符串的存儲(chǔ)空間設(shè)置為read-only,所以運(yùn)行時(shí)報(bào)錯(cuò);

char *s = "abcde";相當(dāng)于const char *s = "abcde";

-------------------------------------------
按照樓上各位的說(shuō)法,編譯器應(yīng)該禁止這么聲明:
char *s = "abcde";
而強(qiáng)制我們?nèi)缦侣暶鳎?BR>const char *s = "abcde";
為什么編譯器沒(méi)有這么做呢?
--------------------------------------------
沒(méi)錯(cuò),的確因該像樓主說(shuō)的那樣,編譯器應(yīng)該禁止這種行為,進(jìn)而幫助程序員寫(xiě)出正確的程序。
但是,這是一個(gè)特殊情況,是一個(gè)特例!
為什么這么說(shuō)呢?因?yàn)閏har *s = "abcde";這種模式已經(jīng)被很多人所使用(也包括樓主),它被使用的如此廣泛以至于標(biāo)準(zhǔn)給它一些寬容:允許這樣的代碼通過(guò)編譯。

-------------------------------------------- 《effective c++》91頁(yè)注釋1:
在C++ standard中,"Hello"的型別是const char[];這個(gè)型別幾乎總是被視為const char*。因此我們預(yù)期,以一個(gè)字符串子面常量(string literal,例如"hello")作為一個(gè)char*變量的初值,會(huì)違反常量性。但是此種行為在C語(yǔ)言中實(shí)在太過(guò)頻繁,所以C++ standard對(duì)于這樣的初始化動(dòng)作特別給與豁免。盡管如此,你還是應(yīng)該避免這么做,因?yàn)槟钱吘共槐淮蠹艺J(rèn)同。

相關(guān)文章

  • C++非遞歸建立二叉樹(shù)實(shí)例

    C++非遞歸建立二叉樹(shù)實(shí)例

    這篇文章主要介紹了C++非遞歸建立二叉樹(shù)的方法,實(shí)例分析了二叉樹(shù)的原理與C++實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C語(yǔ)言中.與->的區(qū)別詳細(xì)解析

    C語(yǔ)言中.與->的區(qū)別詳細(xì)解析

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中.與->區(qū)別的相關(guān)資料,這雖然是個(gè)小問(wèn)題,但有時(shí)候很容易讓人迷惑,因?yàn)橛械臅r(shí)候用混淆了,程序編譯不通過(guò),需要的朋友可以參考下
    2023-06-06
  • C++實(shí)現(xiàn)LeetCode(122.買(mǎi)股票的最佳時(shí)間之二)

    C++實(shí)現(xiàn)LeetCode(122.買(mǎi)股票的最佳時(shí)間之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(122.買(mǎi)股票的最佳時(shí)間之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 基于MFC實(shí)現(xiàn)類(lèi)的序列化詳解

    基于MFC實(shí)現(xiàn)類(lèi)的序列化詳解

    序列化是將程序中的對(duì)象以一種二進(jìn)制格式存儲(chǔ)到存儲(chǔ)設(shè)備中(例如文本/數(shù)據(jù)庫(kù)等),以實(shí)現(xiàn)“永生”或隨意“流動(dòng)”。本文將為大家詳細(xì)講講如何基于MFC實(shí)現(xiàn)類(lèi)的序列化,需要的可以參考一下
    2022-07-07
  • C語(yǔ)言實(shí)現(xiàn)餐飲結(jié)賬管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)餐飲結(jié)賬管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)餐飲結(jié)賬管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++類(lèi)結(jié)構(gòu)體與json相互轉(zhuǎn)換

    C++類(lèi)結(jié)構(gòu)體與json相互轉(zhuǎn)換

    這篇文章主要介紹的是C++類(lèi)結(jié)構(gòu)體與json相互轉(zhuǎn)換,json字符串一般使用的是開(kāi)源的類(lèi)庫(kù)Newtonsoft.Json,方法十分簡(jiǎn)潔,下面就隨小編一起看下面文章內(nèi)容吧
    2021-09-09
  • QT Creator+OpenCV實(shí)現(xiàn)圖像灰度化的示例代碼

    QT Creator+OpenCV實(shí)現(xiàn)圖像灰度化的示例代碼

    這篇文章主要為大家詳細(xì)介紹了QT如何利用Creator和OpenCV實(shí)現(xiàn)圖像灰度化效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-12-12
  • C++入門(mén)淺談之類(lèi)和對(duì)象

    C++入門(mén)淺談之類(lèi)和對(duì)象

    C++ 是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,理解 C++,首先要理解類(lèi)(Class)和對(duì)象(Object)這兩個(gè)概念。下面和小編一起來(lái)學(xué)習(xí)吧
    2021-10-10
  • C++中typedef 及其與struct的結(jié)合使用

    C++中typedef 及其與struct的結(jié)合使用

    這篇文章主要介紹了C++中typedef 及其與struct的結(jié)合使用,需要的朋友可以參考下
    2014-02-02
  • C語(yǔ)言malloc與calloc區(qū)別詳解

    C語(yǔ)言malloc與calloc區(qū)別詳解

    本文主要介紹了C語(yǔ)言malloc與calloc區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評(píng)論

天祝| 黄梅县| 隆昌县| 泗阳县| 武邑县| 石河子市| 卓资县| 凭祥市| 弥勒县| 庆云县| 天祝| 闸北区| 石门县| 嘉义县| 金秀| 松江区| 建宁县| 安顺市| 崇信县| 连山| 白城市| 宜君县| 五原县| 永登县| 万州区| 桂阳县| 莫力| 苗栗市| 泾阳县| 潼南县| 桦甸市| 澄江县| 东阳市| 玉门市| 宁波市| 攀枝花市| 昆山市| 双流县| 贵德县| 竹山县| 镇坪县|