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

首頁 > 編程 > C > 正文

char str[] 與 char *str的區別詳細解析

2020-01-26 15:52:28
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

char* get_str(void) 

    char str[] = {"abcd"}; 
    return str; 
}

char str[] = {"abcd"};定義了一個局部字符數組,盡管是數組,但它是一個局部變量,返回它的地址肯定是一個已經釋放了的空間的地址。

此函數返回的是內部一個局部字符數組str的地址,且函數調用完畢后 此數組被銷毀,所以你返回的指針也就指向一塊被銷毀的內存,這種寫法是錯誤的。

復制代碼 代碼如下:

char* get_str(void) 

    char *str = {"abcd"}; 
    return str; 


char* str = {"abcd"};表示先定義個字符串常量,并將其地址賦給str。
此函數返回的是字符串常量的地址,而像這種字符串都是屬于全局的,在編譯的時候就已經分配了內存了,只有程序退出的時候才會被銷毀,所以返回它的地址是沒有問題的,但是你最好返回常量指針,因為你不能去改變字符串常量的值。
復制代碼 代碼如下:

const char str[] = "abcd";        //abc存儲在堆棧中 
const char *str = "abcd";         //abc存儲在靜態存儲區 

準確的說,上面兩個“abc"都是存儲在靜態存儲區,即常量區。常量區是可讀不可寫的。所以任何試圖對常量區進行寫的操作都是非法的,當然了,這也不是一定不可寫的,你可以采取某種渠道改變常量區的內存屬性,比如改變pe相關節的屬性就可以對常量區進行讀寫,當然了,這個目前可以忽略。。。

那么為什么str[] = "abc";     
可以寫呢?  
答案就在str[] = "abc";會有一個額外的拷貝過程,即把常量區的 "abc"拷貝到棧內存去,所以就可以寫了。

總結:
所有以" "或' '包含的字符、字符串都是常量,應該是存儲在堆上。

復制代碼 代碼如下:

char *str = "xxxxx",str指向該常量地址。
char str[] = "xxxxx",str在棧上申請空間,將常量內容復制進來,所以是局部變量。

首先,數組和指針是不同的數據類型,有本質的區別:
復制代碼 代碼如下:

char str[] = "abcd";  //sizeof(str) == 5 * sizeof(char)
char * str = "abcd";  //sizeof(str) == 4(x86) or 8(x64)

數組可以自動轉型成指針,指針不能轉成數組。

然后,字符串等價于字符數組,而不等于字符指針。根據上一條,字符串可以自動轉型成字符指針。

再然后,"abcd"叫做“字符串常量”,任何類型的常量都是右值(沒有名字的臨時變量),必須讓"abcd"成為左值(有名字的變量),才能夠修改"abcd"這個字符串。

復制代碼 代碼如下:

char str[] = "abcd"; //等號兩端是相同的數據類型,右值成為左值
char * str = "abcd"; //等號兩端是不同的數據類型,右端自動轉型成char*,該char*得到了str的名字,而"abcd"這個char數組仍然沒有名字。

char * str是存儲在全局靜態存儲區,所以,雖然是局部變量但函數返回后依然可以拿到正確的值!
char str[] 是存儲在棧上的,local variable ,函數返回后,OS就收回空間了,就不復存在了,所以,拿不到正確的結果!

char str[]="name";與char str[5];str="name" 的不同之處在哪,能不能從內存分配的角度講一講,我知道數組名字是一個常量地址(指針),第一個為什么對,第二個為什么錯?

第二個先定義了一個數組,要知道數組名str是數組分配到的空間的首地址,str="name"應該是等號兩邊類型不匹配的錯誤。一般的常量應該沒有內存地址的,除非有某個變量指向了該常量。

數組名是地址常量,那么常量當然不允許被重新賦值。
"name"是一個字符串常量他存儲在常量存儲區,只能用一個指針指向它卻不允許改變:char*p;p="name";
一般情況下char str[]="name";數組是在棧上的空間由編譯器分配,內容可以由用戶改變。

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久com| 亚洲色图色老头| 国产美女精彩久久| 国产成人av在线| 97视频人免费观看| 国产精品日韩专区| 亚洲精品小视频在线观看| 亚洲成人在线视频播放| 久久久999精品视频| 亚洲电影免费观看高清完整版| 色老头一区二区三区在线观看| 久久九九全国免费精品观看| 日韩精品中文字幕在线| 午夜精品福利在线观看| 国产小视频国产精品| 97**国产露脸精品国产| 福利精品视频在线| 最近的2019中文字幕免费一页| 97精品在线视频| 亚洲精品一区二区三区婷婷月| 国产精品久久久久久一区二区| 国产精品高潮呻吟久久av无限| 97欧美精品一区二区三区| 欧美性高潮床叫视频| 欧美激情一级二级| 国产精品户外野外| 久久精品视频在线观看| 57pao精品| 中文字幕在线日韩| 青青a在线精品免费观看| 久久久精品影院| 久久久精品国产| 日韩欧美国产一区二区| 成人黄色免费片| 国内精品久久久久影院 日本资源| 欧美日本高清视频| 精品国产一区二区三区四区在线观看| 国产日韩精品入口| 成人h片在线播放免费网站| 色婷婷av一区二区三区在线观看| 亚洲国产日韩欧美在线99| 欧美激情手机在线视频| 欧美日韩国产综合视频在线观看中文| 欧美专区国产专区| 亚洲免费视频网站| 91在线免费观看网站| 精品香蕉在线观看视频一| 成人高清视频观看www| 97超级碰在线看视频免费在线看| 最近的2019中文字幕免费一页| 欧美激情伊人电影| 久久久精品久久久久| 欧美成人性色生活仑片| 国产亚洲aⅴaaaaaa毛片| 97视频在线观看播放| 欧美日韩国产丝袜美女| 国产亚洲精品久久久优势| 米奇精品一区二区三区在线观看| 欧美国产视频日韩| 2019av中文字幕| 精品无码久久久久久国产| 中文字幕久久精品| 日韩电影在线观看免费| 国产精品678| 欧美视频一区二区三区…| 欧美日本高清视频| 亚洲综合成人婷婷小说| 亚洲日韩第一页| 国产91网红主播在线观看| 韩国三级电影久久久久久| 久久久久亚洲精品成人网小说| 丝袜亚洲另类欧美重口| 日韩美女激情视频| 亚洲欧美在线第一页| 九九热精品视频国产| 成人黄色中文字幕| 一本一道久久a久久精品逆3p| 日韩性生活视频| 丰满岳妇乱一区二区三区| 欧美最顶级的aⅴ艳星| 国产不卡av在线| 亚洲欧美日韩在线一区| 欧美日韩性视频在线| 国内外成人免费激情在线视频| 中文字幕精品av| 亚洲欧美一区二区精品久久久| 激情懂色av一区av二区av| 色偷偷9999www| 日韩亚洲精品视频| 亚洲精品自拍偷拍| 精品国内亚洲在观看18黄| 黄色成人在线播放| 国产精品成人免费电影| 久久精品国产亚洲精品| 自拍偷拍亚洲一区| 疯狂欧美牲乱大交777| 国产精品777| 精品露脸国产偷人在视频| 亚洲天堂av女优| 成人黄色av播放免费| 久久免费视频这里只有精品| 久久99热这里只有精品国产| 日韩在线免费高清视频| 久久综合伊人77777蜜臀| 欧美高清视频在线| 热99精品只有里视频精品| 成人免费淫片aa视频免费| 色综合久久久888| 91欧美精品午夜性色福利在线| 欧美成人午夜免费视在线看片| 国产成人精品视频在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 欧美精品18videos性欧| 青青久久av北条麻妃黑人| 国产97色在线|日韩| 亚洲一区二区日本| 欧美激情中文字幕乱码免费| 中文字幕视频一区二区在线有码| 57pao国产精品一区| 国产日产久久高清欧美一区| 成人动漫网站在线观看| 久久精品夜夜夜夜夜久久| 欧美一级成年大片在线观看| 久久成人综合视频| 欧美成人激情在线| 中文亚洲视频在线| 亚洲视频777| 欧美日韩午夜剧场| 欧美午夜美女看片| 中文字幕亚洲一区| 亚洲第一福利视频| 欧美大胆在线视频| 日韩欧美精品免费在线| 性色av一区二区三区红粉影视| 欧美性受xxxx白人性爽| 欧美亚洲国产成人精品| 国产精品老牛影院在线观看| www.久久久久久.com| 亚洲视频视频在线| 亚洲精品国产精品国自产观看浪潮| 精品久久久999| 在线日韩欧美视频| 亚洲欧美激情视频| 欧美成人四级hd版| 精品色蜜蜜精品视频在线观看| 亚洲综合日韩中文字幕v在线| 国产精品高清网站| 欧美一区三区三区高中清蜜桃| 国产精品成人免费电影| 国内精品久久久久影院优| 91国在线精品国内播放| 国产日韩精品在线观看| 日本午夜精品理论片a级appf发布| 欧美亚洲成人网| 欧日韩在线观看| 国产日韩欧美另类| 热re99久久精品国产66热| 国产在线精品自拍| 成人福利免费观看| 国产99久久久欧美黑人| 中文欧美在线视频| 久久五月天综合| 日韩网站在线观看| 日韩成人av网址|