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

首頁 > 編程 > C > 正文

關于c語言指針的兩處小tip分享

2020-01-26 16:14:07
字體:
來源:轉載
供稿:網友

1:常量指針與指針常量

常量指針與指針常量名字很接近,但是兩者區別很大。
常量指針是指指向常量的指針,例如:char const *st[4]="str";或者使用下面的方法,效果是一樣的:const char *st[4]="str"; 它聲明了一個指針變量,這個指針指向了一個常量字符串,但是由于指向的內存空間是常量,因此該地址的內容是不能修改的,例如:*st="no"; //這是不行的,因為內存空間的內容不能修改st="ok"; //這是可以的,雖然指向的內存內容不能修改,但是指針的指向是可以修改的。
指針常量是指一個指向固定內存單元的指針,其內容可以修改,但是不能改變指向的位置,例如:char *const st[4]="str";*st="ok"; //這是可以的,因為指向位置的內容可以修改。st="no"; //這樣行不通,因為指針是不能改變指向位置,即如果初始化為地址0X8000,那么它只能指向這個位置,不能改變,但是0X8000的內容是可以改變的。

char *s = "abcde";
s[0] = '1';//此句在運行時出錯

如下是可以的:

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

  
因為:

字符串常量是不能改的,編譯后是放到只讀內存(靜態存儲區)中的;

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

因為“通過指針修改字符串常量的行為”是未定義的,上次就有個人問"為什么上述代碼在TC下不報錯而在VC6.0下報錯"。不過,現在大多實現把常量字符串的存儲空間設置為read-only,所以運行時報錯;

char *s = "abcde";相當于const char *s = "abcde";

-------------------------------------------
按照樓上各位的說法,編譯器應該禁止這么聲明:
char *s = "abcde";
而強制我們如下聲明:
const char *s = "abcde";
為什么編譯器沒有這么做呢?
--------------------------------------------
沒錯,的確因該像樓主說的那樣,編譯器應該禁止這種行為,進而幫助程序員寫出正確的程序。
但是,這是一個特殊情況,是一個特例!
為什么這么說呢?因為char *s = "abcde";這種模式已經被很多人所使用(也包括樓主),它被使用的如此廣泛以至于標準給它一些寬容:允許這樣的代碼通過編譯。

-------------------------------------------- 《effective c++》91頁注釋1:
在C++ standard中,"Hello"的型別是const char[];這個型別幾乎總是被視為const char*。因此我們預期,以一個字符串子面常量(string literal,例如"hello")作為一個char*變量的初值,會違反常量性。但是此種行為在C語言中實在太過頻繁,所以C++ standard對于這樣的初始化動作特別給與豁免。盡管如此,你還是應該避免這么做,因為那畢竟不被大家認同。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久91| 韩日欧美一区二区| 68精品国产免费久久久久久婷婷| 一本大道久久加勒比香蕉| 北条麻妃99精品青青久久| 欧美激情一二区| 日韩精品免费综合视频在线播放| 欧美怡春院一区二区三区| 欧美日韩日本国产| 另类少妇人与禽zozz0性伦| 粗暴蹂躏中文一区二区三区| 国产一区二区三区毛片| 中文字幕亚洲无线码在线一区| 欧美精品videosex极品1| 最新亚洲国产精品| 91精品国产乱码久久久久久久久| 精品久久久久久中文字幕大豆网| 51精品国产黑色丝袜高跟鞋| 欧美激情视频网| 欧美电影第一页| 中国china体内裑精亚洲片| 欧美国产亚洲视频| 色阁综合伊人av| 日韩精品www| 国语自产在线不卡| 成人免费大片黄在线播放| 欧美高清一级大片| 色综合色综合久久综合频道88| 高清日韩电视剧大全免费播放在线观看| 成人免费视频xnxx.com| 国产精品揄拍500视频| 国产精品盗摄久久久| 在线播放国产精品| 国产视频丨精品|在线观看| 亚洲美女精品久久| 亚洲第一精品夜夜躁人人爽| 91夜夜揉人人捏人人添红杏| 美日韩精品视频免费看| 日韩国产在线播放| 欧美成人精品在线观看| 国内外成人免费激情在线视频| 久久人人爽人人爽爽久久| 91久久精品国产91久久| 精品偷拍一区二区三区在线看| 欧美小视频在线观看| 国产国语刺激对白av不卡| 亚洲欧美福利视频| 国产精品 欧美在线| 日韩成人在线视频观看| 日韩影视在线观看| 亚洲人成人99网站| 国产精品日韩欧美| 丝袜美腿亚洲一区二区| 欧美中文在线观看| 狠狠做深爱婷婷久久综合一区| 77777少妇光屁股久久一区| 国产日韩欧美在线播放| 国产成人鲁鲁免费视频a| 51久久精品夜色国产麻豆| 久久亚洲电影天堂| 欧美亚洲视频一区二区| 国产精品久久99久久| 亚洲国产精品va在线看黑人| 91高清免费在线观看| 精品久久久视频| 亚洲一区二区三区四区视频| 国产女精品视频网站免费| 欧美日韩一区二区三区在线免费观看| 色琪琪综合男人的天堂aⅴ视频| 国产不卡av在线免费观看| 午夜精品蜜臀一区二区三区免费| 国产亚洲欧洲在线| 国产精品入口夜色视频大尺度| 国产一区二区三区在线播放免费观看| 亚洲国产精品久久久| 久久久国产视频| 色综合久综合久久综合久鬼88| 92看片淫黄大片看国产片| 国产精欧美一区二区三区| 日韩美女在线看| 久久国产精品免费视频| 欧美色视频日本版| 国产69精品久久久| 神马久久桃色视频| 国产精品免费观看在线| 国产在线高清精品| 亚洲天堂男人的天堂| 久久天天躁狠狠躁夜夜av| 日韩美女中文字幕| 岛国精品视频在线播放| 亚洲欧美日韩视频一区| 国产精品久久久久久久久久尿| 亚洲综合成人婷婷小说| 国产91在线高潮白浆在线观看| 在线日韩精品视频| 欧美激情视频播放| 日韩av在线免费播放| 97在线精品国自产拍中文| 亚洲高清免费观看高清完整版| 欧美激情啊啊啊| 久久91亚洲精品中文字幕| 日韩在线免费视频观看| 成人深夜直播免费观看| 一区二区成人av| 日韩在线一区二区三区免费视频| 韩国一区二区电影| 亚洲一区二区三区sesese| 狠狠色狠狠色综合日日小说| 福利一区福利二区微拍刺激| 欧美精品18videosex性欧美| 久久成年人免费电影| 97成人在线视频| 国产精品久久久久久久久久尿| 欧美日韩福利视频| 精品久久久久久中文字幕一区奶水| 久久777国产线看观看精品| 久久久免费观看| 国产精品一区二区三区在线播放| 成人av在线天堂| 国产精品视频成人| 国产婷婷色综合av蜜臀av| 91精品国产91久久久久久吃药| 久久成人这里只有精品| 精品人伦一区二区三区蜜桃免费| 国产欧美日韩视频| 欧美激情一区二区三区久久久| 国产国语videosex另类| 欧美日韩国产激情| 福利精品视频在线| 精品美女国产在线| 国产精品久久网| 日韩高清中文字幕| 国产热re99久久6国产精品| 日韩欧美在线观看| 亚洲免费一级电影| 欧美主播福利视频| 精品久久久av| 91精品国产色综合久久不卡98口| 亚洲欧美激情视频| 欧美日本在线视频中文字字幕| 精品毛片三在线观看| 国产精品久久久久久久久久久久久| 国产91精品久久久久久| 国产精品一区二区久久国产| 久久久久北条麻妃免费看| 久久免费视频在线观看| 亚洲国产精品热久久| 国产精品视频一区二区三区四| 青青草精品毛片| 亚洲伊人久久大香线蕉av| 欧美专区在线观看| 亚洲国产天堂久久国产91| 日韩视频精品在线| 欧美精品18videos性欧美| 久久亚洲欧美日韩精品专区| 中文字幕亚洲欧美在线| 国产99在线|中文| 亚洲高清免费观看高清完整版| 欧美日韩xxxxx| 亚洲国产精品视频在线观看| 色偷偷亚洲男人天堂| 日韩亚洲一区二区| 亚洲免费伊人电影在线观看av| 国产99在线|中文|