麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

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

2020-01-26 16:14:07
字體:
供稿:網(wǎng)友

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

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: www国产成人免费观看视频 | 视频一区二区国产 | 亚洲国产综合在线观看 | 久色网站 | 一区二区免费 | 97久久日一线二线三线 | 日本在线播放一区二区 | 国产在线观看91一区二区三区 | 欧美不卡在线 | 久久精品亚洲欧美日韩精品中文字幕 | 久久免费看毛片 | 美女亚洲综合 | 天天干导航 | 免费国产在线视频 | 亚洲第一成人久久网站 | 黄色网址入口 | 久久91精品 | 一级黄色国产视频 | 国产亚洲高清视频 | 午夜精品在线视频 | 悠悠成人资源亚洲一区二区 | 青草久久久久 | 久久精品视频首页 | 色污视频在线观看 | 日日草夜夜操 | 7777奇米成人四色影视 | 成人精品久久 | 国产一级大片在线观看 | 久久久久久久久91 | 色淫视频| 国产一区二区二 | 大片毛片| 红杏亚洲影院一区二区三区 | 久久男| 欧美精品1区| 337p日本欧洲亚洲大胆精蜜臀 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 日韩字幕在线观看 | 国产精品久久久久久久久久久天堂 | 国产精品入口夜色视频大尺度 | 欧美成人免费在线视频 |