關於陣列中的0(反斜槓零)問題,關於C語言字元陣列的賦值最後自動新增 0 問題

2022-11-28 19:21:37 字數 4877 閱讀 6543

1樓:匿名使用者

1全部char *p = "abcd"; //這後面就自動加'\0';

char p = "abcd"; //這後面自動加'\0'

char p[4] = "abcd"; //這個就有問題了,因為其實你只能在p中放三個字元。這個'\0'是要你自己加上去的

2樓:匿名使用者

是否賦值為0這要由編譯器決定,

不過現在的編譯器基本都做到這點了.

但好的風格是這樣:

int a[5]=;

這樣a的5個元素初始化都為0,

但如果你不想要5個元素都為0那就要人為寫了.

int a[5]=;

另外字元型陣列變數系統最後為自動加上\0

3樓:匿名使用者

ls有誤。

1.無論如何,初始化不是賦值。

2.字元型陣列變數不會自動初始化。""之間的字串(字串字面量)這種表示方法末尾即隱含了一個字串結束符'\0'。

對於陣列而言,無論元素型別如何,如果顯式初始化,而且初始化的元素個數小於定義的陣列長度時,編譯器自動把剩餘空間初始化為零。因此int a[5]=;這類寫法相當於全部初始化為零。

對於全域性或靜態變數,如果不顯式初始化,所有空間都會被隱式初始化為零。

除此之外的區域性自動變數,如果不顯式初始化,所佔空間為隨機值。

====

[原創回答團]

關於c語言字元陣列的賦值最後自動新增『\0』問題

4樓:

#include

void main()

;printf("%s\n",c);

c[0]='a'; // 僅對bai第一位元du素賦zhi值,它並不影響dao

其後面的版字元權

printf("%s\n",c);

c[1]='b';  // 同理

printf("%s\n",c);}

5樓:w天使de翅膀

可以正常讀出來的,\0只是一個相當於識別符號的東西,用來判斷已經到達字串的末尾

6樓:匿名使用者

c[5]只有5個空間無法完全容納字串"hello",因為這個字串需要佔用6個字元位置。

所謂自動加'\0'的問題是內:你寫在雙

容引號中的,編譯程式會認為是字串,會自動為你新增上一個字串結尾符號0,而不是執行時新增的。

如果你用debug方式執行程式,除錯環境自動會把你開設的char a[5];進行初始化0的工作,這時你再將第1位初始化時,後面的0仍存在就好象字串結尾已經存在了。如果非debug執行則沒有這個初始化工作。

如果你用字元方式初始化應當寫:char c[6]=;

7樓:匿名使用者

char c[5] = ; 有兩個問題

(1)語法不對,應該是 char c[5]="hello"

(2)有錯誤, char c[5]="hello",字串終止符溢位了

2.  但是我如果定義char a[5];給前一回位賦初值,答

則第二到第五位會自動賦值'\0'

// 沒錯,但注意是陣列第1到第4項自動賦值為0但後面我又給第三位到第五位賦值了,這個陣列是不是就不能正常讀出了// 需要看你賦什麼值,如果是非零值、並且你把陣列a當字串使用,則結果無法預料(無法確定終止符);如果你把陣列a只是當陣列使用,則不會有讀取問題

8樓:阿炳仰

可以正常讀出 就是隻能讀出 第一位

json陣列中的反斜槓等問題怎麼處理

9樓:地瓜說機

你這個不算標準的json格式資料,可以先將\"替換成"即可。

再用json_decode()系統函式將其轉為json物件,如需轉為陣列加上第二個引數為true即可。

若仍輸出為null,是由於存在bom頭資訊,$arr = json_decode(trim($json,chr(239).chr(187).chr(191)),true);

轉換即可。

陣列最後一個補零,只有字元陣列需要補零嗎? int a[6]={ 0,1,2,3,4,5 };是對

10樓:匿名使用者

只有字元陣列一個字元一個字元初始化的時候需要手動新增'\0',作為字串的結束標誌,其他陣列是不需要的,題中的是正確的

11樓:匿名使用者

字元陣列補的是反斜槓0,代表結束,整型陣列是不夠他就補0

c語言的反斜槓0是\0 這麼寫嗎?我輸入字串,除錯發現\0被拆成\和0 ???

12樓:

'\0'在編譯前的以明確指出這個位元組內容為空字行(ascii碼為0),而不是字元'0'

這個轉義是在編譯時轉的,

執行過程中,不再對輸入的串轉義,僅輸入串結束時會自運補一個'\0'做為串的結束,

所以編譯前可以有'\0'字元,

執行中輸入則沒有, '\'是一個字元,'0'也是一個字元, 一起輸入也是兩字元不是一個字元

有個特例是把串再做為格式化的格式,可以在執行中轉義,那是scanf 和 printf的能力了

(如 scanf("%s",fmt); printf(fmt,a,b,c); 這樣的形式,在執行中還有轉義行為)

13樓:匿名使用者

用引號引起來才行

如:'\0'

"hello\0"

14樓:匿名使用者

用單引號引起來才行

'\0'

c語言中 \0 代表什麼?

15樓:匿名使用者

c語言中「\0」是空字串。 是字元常量,null 字元,ascii碼數值0,用作字串結尾符。

字串長度是0, 佔記憶體 2 位元組。

16樓:唔現場

例如int a[10]=;

int *p;

p=a;//是把陣列du中zhi的第dao一個元素版的地址賦給權指標p

p=&a[4];//是把陣列中的第五個元素的地址賦給指標p,運算子的作用是在陣列首地址的基礎之上偏移4個地址長度,得到第五個地址,然後賦給p

17樓:匿名使用者

按我的理解bai,c語言中單獨的[ ]什麼也不du是。不是中括號,也zhi不是其他的。。dao。組合版使用時可以定

義陣列,如int a[10];表示定義一權個10個元素的陣列,a[3]=5;表示第三個陣列元素的值是5,int a[2][2];表示定義一個二維陣列。

c語言中,無論是小括號、中括號、大括號,都用()的層數來表示。如(((2+3)*2+5)*3),從裡到外依次為小括號到大括號。。。如果還有更多層數,再加括號就行了。

18樓:匿名使用者

乘,指標 表示一個字串,這個字串有兩個字元,一個有效字元 '*' "*"在c語言中代表指向的內容,它與所指內容合在一起構成指標

c語言反斜槓的問題

19樓:匿名使用者

輸出:5,6.原因:

字串內容為一個換行符、三個數字、一個反斜槓,共是5個字元,長度為5. 有因為字串最後有一個「\0」字元,所以大小為6.注意:

「\n」和「\\」分別表示換行符與一個反斜槓。

20樓:匿名使用者

沒有去驗證,首先我覺的編譯不通過,具體回答留給樓下的人

21樓:匿名使用者

輸出5,6

char s="\n123\\"; s包含6個位元組,分別是\n123

\\\0

strlen(s)只統計s中非0字元的總數,所以不包括結尾的\0,sizeof(s)則返回字元陣列的大小,包括\0在內

所以輸出5,6望採納

22樓:

5,6才是對的,「\\」有轉義的作用,表示一個「\」,「\n」一樣有轉義作用,是一個字元。sizeof的話,應該算上"\0",他是字串結束符,每個字串都有一個「\0」

23樓:匿名使用者

輸出為5,6。反斜槓在c語言中被用作轉義字元,如果要輸出反斜槓字元本身,則在程式中必須寫成\\。在你上面的程式中,\n是一個字元,\\是一個字元,因而在取字串長度時,就是5;因為s是一個字元陣列,而用來對其進行初始化的字串是以\0結尾(編譯時會自動加上),所以sizeof(s)是6。

24樓:冰是沉默的水

\ 表示轉意字元,意思是這個字元不再是單純的斜槓,而要結合後面的一個值,有很多是有特定的意思,比如\a表示」嘟「一聲,\n表示換行,\\表示一根斜槓,\t表示列印一個table,還有其他很多有特定意思,我就不完全舉例了

-物聯網校企聯盟技術部

25樓:

輸出是 6 4

6是strlen(s)的輸出結果 字串"\n123\\" 的長度 其中\n是一個字元 代表「回車」(enter) 其他的1,2,3,\,\ 各佔一個字元

4是sizeof(s)的輸出結果 char這個型別的長度 為4 代表每個字元佔4個位元組

\後面跟上特定的字母代表特定的字元 比如\n代表回車 \t代表tab鍵 等等 因為這些字元無法直接用某個字元直接表示 所以用 \跟字母 的組合代表特殊字元

希望可以幫到你

26樓:匿名使用者

\n轉義字元 表示 回車

\\轉義字元 表示 \

程式你在vc上執行一下就知道答案了!

27樓:匿名使用者

\n 回車

\\ =\

C,C 中關於char以及char陣列的問題

1.因為 iostream內部 cin cout 對char 做了特殊處理.因為c c 輸入輸出字串通常要用到char 如果直接輸出地址,就要用別的方法來輸出字串了 就不方便了.所以直接輸出地址 那裡放著的字串.3 sizeof hello 得到 字串實際長度 0 佔的一個位元組 一般用strlen...

關於EXCEL陣列的問題

這裡涉及到陣列運算。b53 c63是一個11行2列陣列,一個陣列與一個值比較,結果是一個11行2列的邏輯陣列。如b53 c63 60,若b53大於等於60就是true,否則就是false,同樣c53大於等於60為true,否則為false,依次比較下去。按你的例子就得到以下陣列。轉換成 形式可看的更...

磁碟陣列的問題,關於磁碟陣列的幾個問題

你的陣列速度一般,而且突發太低了。這是我剛剛測的 我的陣列用了三年多了,現在好多碎片,還開了幾個程式,但是測出來也要比你的高。所以你應該關掉所有不必要的程式再進行測試,速度應該比現在好很多。還有就是你的讀取曲線波動太大,不穩定,可能使用過一段時間了吧,碎片太多。17.6ms的存取時間也不理想。別太相...