char strabcde與char strabcde有何區別

2022-10-07 20:21:53 字數 4384 閱讀 4890

1樓:泠月冰辰

區別還是很大的。

1,char *str這個沒有實際的記憶體空間,所指的只是"abcde"字串而已,所以不能修改其值. 而char str這個是真正的把"abcde"儲存在了記憶體中,有實際記憶體空間,所以,可以修改.

2,以指標角度來看,char *str指標可以移動(可以進行str++,str--),但是char str不能移動.因為陣列可以看成一個常指標.

3,大小.. 凡是指標,32位系統均是4個位元組.也就是char *str="abcde";

sizeof(str)為4;

而陣列卻可以得出其實際大小.

char str="abcde";

sizeof(str)為6(末尾'\0'字元);

當然,strlen(str)都是一樣的為5.

2樓:發假或一半訊息絕戶

不一樣,char *str = "abcde"; 這個定義出來的是個常量,char str ="abcde"; 這個定義的是陣列,你要不相信的話,可以做個簡單的聯絡

char *str = "abcde"; str[1] = "b";這個就是錯誤的,而第二個就可以

3樓:匿名使用者

一樣的,str紀錄的都是頭指標

4樓:李維建

區別就大了,一個是指標,一個是陣列。

5樓:匿名使用者

兩者是一樣的,陣列名即為一個指標

c語言 char *str 與char str[] 這倆種定義字串到底有什麼區別

6樓:園林植物手冊

一、概念不同

char *str 宣告的是一個指標,這個指標可以指向任何字串常量。char str 宣告的內是一個字元陣列容,陣列的內容可以是任何內容,嚴格意義上說,末尾加上'\0' 之後才能算是字串,

二、變數不同

char *str裡的str是指標變數,str的值未初始化(區域性變數的話。全域性則自動初始化為null)。char str[ ]裡str是地址常量,str的值是str[ ]的地址。

三、定義方法不同:

在char * str中,明顯str的型別是char*。這沒什麼特殊的,只是一個簡單的char指標。char str是不能這樣定義的,所以假定用char str[6] = "abcde";那麼這裡str的型別是char[6](6個,不是5個,因為最後有個0) ,而這種定義語句也是定義一個char[6]型別的唯一方法。

7樓:這自來水來自這

char *str; 這裡str是指標變數,來str的值未初源

始化(區域性變數的話。bai全域性則du自動初始化為null)char str[10]; 這裡zhistr是地址常量,daostr的值是str[0]的地址

8樓:匿名使用者

兩者都代表bai一個字元陣列存du儲空間的首地址,zhi區別在:

char *str;

這個變數可dao以進行指標運算,比如

回:答str++;

str--;

但如果定義成:

char str;

則str++這樣的語句是錯誤的,這個首地址不得進行賦值計算。

在不改變str指標指向地址的情況下,下面的語句是一樣的結果。

printf("%s",str+2);

9樓:

第一種為定義一個指標變數;

第二種為定義一個陣列;

如果定義時為其賦初始值,如char *str1 = "hello world!

10樓:匿名使用者

而且char *str中str更方便活用因為是變數 所以可以進行多重操作,從某種意義上說,一般採用第一種方式去定義一個字串,,注意下越界和初始化的問題就好了

11樓:匿名使用者

char *str 宣告的是一個指標,這個指標可以指向任何字串常量;

char str 宣告的是一個字元陣列,陣列的內容可以是任何內容,嚴格意義上說,末尾加上'\0' 之後才能算是字串

char str[]="abcd"與char str[]={'a','b','c','d'}一樣嗎?

12樓:匿名使用者

不一樣。

char str="abcd" 這個屬於字串陣列,末尾以"\0」結束。

char str=這個是字元陣列,陣列裡有4個元素。

一個是字串,一個是字元,所佔的記憶體也不同。

c中你可以用 sizeof(陣列名)測試。不同軟體會有不同的答案,不過並不影響判斷。

13樓:風z使者

不一樣,不信可以試試:sizeof(str)看看是不是相同就是了(搞錯了,這樣返回的是指標的大小...不能做判斷依據)

用了char str="abcd"," "會自動加\0在最後

編譯器會給字串最後加個\0,表示字串的結束,以便輸出字串的時候知道什麼時候結束

14樓:匿名使用者

不一樣c literal 字串有一個\0結束符。

char str="abcd" 等價於 char str=,實際上佔用5bytes記憶體。

char str= 佔用4bytes記憶體。

c語言裡char* str和char *str的區別 80

15樓:尺蠖丨蚩

你是想問char *str【】和char str【】【】這個吧....

char *str="abcde",怎麼得到str的長度

16樓:匿名使用者

使用strlen函式,具體如下:

17樓:生還是為你

str是指標,那就讓指標往後走啊。。。當遇到\0時就結束,用一變數記錄指標移到次數即可得到長度

18樓:匿名使用者

有兩個方法,一個是用系統函式strlen,另一個是自己編函式來求。第一個簡單,下面是第二種方法:

#include

int len(char *p)

void main()

19樓:匿名使用者

庫裡有strlen方法,可以得到字串的長度,但是不適合你這種情況,因為你的字串沒有結束(不是以'\0'結束),直接用的話得出的結果不正確,或者會發生越界異常;

20樓:匿名使用者

sizeof(str)得到的是字串大小,還包含字串最後一個字元『\n』

strlen(str)可得到字串長度

21樓:菜鳥晴天

用字串函式strlen。如果還是不行,那就只能用最笨的方法了,用循計算個數吧。

22樓:匿名使用者

strlen,設計來計算字串長度的

str在這裡是靜態指標,只是指向了「abcde」這個字串的起始地址

23樓:匿名使用者

strlen(str)可以 謝謝採納

24樓:淼淼

strlen(str)

c語言試題:char * str=「abcde」; char chr=—— ; 讓chr存有str的最後一個元素

25樓:匿名使用者

#include

int main()

26樓:

str[strlen(str)-1]

若有以下的陣列定義:char str[]="abcd";char b[]={'a','b','c','d','e'},這兩個陣列他長度為什麼

27樓:匿名使用者

字元陣列!= 字串

字串要求有『\0'結尾,字元陣列沒有!

char str="abcd" ; 這種初始化版,是將一個字串常量權賦值給一個字元陣列str,是「abcd」常量中含有'\0'

char b= ; 這種初始化,是給陣列中的每個元素賦值,與字串無關。因此,沒有』\0'的概念

28樓:

str陣列的長度是5,包括4個字母和一個字串結束符b陣列的長度也5,包括5個字母

使用雙引號設定的字串,系統自動新增字串結束符使用單引號,內容是按單字元處理的

29樓:匿名使用者

額,我只知道你用strlen函式時第一個是返回4,後面那個不太清楚了,建議你以後凡是遇到字串的都用string來搞吧,比char的陣列容易的多,也安全的多。

CH3CH3如何變為CH2 CH2?CH2 CH2與CH3C

乙烷與鹵素取代得到一滷代烷,一滷代烷消去得到乙烯ch3ch3 br2 ch3ch2br hbr條件是光照,ch3ch2br naoh ch2 ch2 nabr h2o條件是醇溶液加熱 乙烯與水加成得到乙醇,乙醇消去得到乙烯 ch2 ch2 h2o ch3ch3oh條件是催化劑加熱,ch3ch2oh ...

怎麼寫由CH3CH2CH2OH生成CH3CH2CHO的化學方

很高復興為你解答,這個反應是由制丙醇催化氧化成為丙bai 醛的過程,反應的化學du方程式為 2ch3ch3ch2oh o2 zhi2ch3ch2cho 2h2o.注意了,反應方程式的中dao間是單箭頭,反應的條件是以銅單質為催化劑,加熱。有不清楚的地方歡迎追問,希望我能幫助你,醇在cu ag等物質催...

CH3 CH2 2CH3括號裡的是什麼意思?是支鏈嗎?如果不是,支鏈怎麼表示呢

不是支鏈,它是直鏈來的,相當於ch3 ch2 ch2 ch3.判斷直鏈或支鏈方法 對於烷烴來說,支鏈肯定不在直鏈的兩端 即第一和最後c上 而是在直鏈的內部,此時,主要看c周圍的是否有2個h,當出現大於或小於2時 一般就是0或1或3 則有支鏈出現的可能性。ch3ch ch2ch3 ch3,在ch中就是...