c語言關於陣列中0和的儲存問題,C語言關於陣列中0和 0 的儲存問題

2021-12-16 10:57:32 字數 3822 閱讀 7650

1樓:滄海雄風

只能佔用4 個 第五個要留給\0

a[4] = 0; 和 a[4] = '\0'; 這倆一樣 \0 ascii 碼 0

a[4]='0' 這樣的 0才是ascii碼48 不要被那些人誤導

2樓:

首先乙個字串的話末尾是必須要有\0的 ,否則會越界,這樣的後果就是程式會有bug,

如果你的陣列有5個空間的話,最後乙個一定要留給\0至於a[4] = 0; 和 a[4] = '\0' 當然是有區別的,要不叫一樣的名字不就完了嗎

0跟\0在的ascii碼是不一樣的 所以代表的也就不一樣啦但是如果要是強轉了\0程式設計整形 他就跟0是一樣的 相反也是一樣的,希望對你有幫助,請採納

3樓:匿名使用者

有兩個概念:

1 如果你不把 a 當字串操作,為什麼硬要加個『\0'?不用這麼硬性。

2 如果你要把a當字串,一定要留出乙個字元做'\0';

否則你用a呼叫任何操作字串的函式(例如:strcpy,strcat等),程式直接崩潰的可能很大。

0和'\0'不一樣。

0是字元0,用ascii表示是48。

'\0'就是ascii的0.絕對的0。呵呵,在記憶體中就是按位看是全0的存在。

4樓:哈薩就是

存在a[4]裡面,即最後乙個元素裡

a[4]不能佔用,不然後面會接亂碼

0和'\0'有區別:乙個在ascii中為48,乙個為0就像乙個0度乙個絕對零度

5樓:匿名使用者

你只管用夠5個就可以了,陣列的結束標誌\0 和a[4]沒關係。

a[i]=0 等同 a[i]='\0'

a[i]='0' 等於 a[i]=chr("48")a[i]=0 等於a[i]=chr("0")

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

6樓:

#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);}

7樓:w天使de翅膀

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

8樓:匿名使用者

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

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

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

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

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

9樓:匿名使用者

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

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

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

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

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

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

10樓:阿炳仰

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

c語言中字元陣列結束標誌為0和'\0'有區別麼? 5

11樓:匿名使用者

'\0' 對應的二進位制位元組是: 00000000

'0' 對應的二進位制位元組是:00110000

這就是為什麼。因為這完全是兩碼事,不同的東西。

c語言中字元陣列結束標誌為0和'\0'有區別麼?

12樓:真淑敏軍秋

'\0'

對應的二進位制位元組是:

00000000

'0'對應的二進位制位元組是:00110000這就是為什麼。因為這完全是兩碼事,不同的東西。

13樓:依染紅雀

區別在於,對字元的操作與數值不同,字元陣列可以當作字串來對待(當然,作為字串,要注意字串的結束符號)

字元陣列也可以當作整型陣列使用,只是表達的範圍比較小而已。

總得來說,字元陣列可以作為字串來操作,這個用途比較大。

如果拋開這個不說,那麼字元陣列,整數陣列、實數陣列除了表達範圍不同外,使用上一樣。

c語言關於陣列賦初值的問題char buff[10]={0};

14樓:匿名使用者

char buff[5]=;這樣寫賦初值,雖說沒有給buff[1]-buff[4]賦值,但是預設是賦值0的,這樣寫沒問題。很多教材上都有的。

15樓:匿名使用者

char buff[10]=;

是可以把這個陣列的所有元素的賦值成0的。

不信你用下面的**測試一下。

#include

void main()

;int i;

for(i=0;i<=4;i++)

}因為有一條規則:在陣列定義的時候如果同時賦初值,未被賦值的元素都是0

16樓:匿名使用者

當buff作為字串使用的時候,第乙個字元被賦值為0(好像就是'\0'),這個字串就是乙個空串,也算是一種合理的初始化方式。

當然如果不是作為字串,而是作為陣列,就存在你說的問題了。

17樓:匿名使用者

需要注意的是:char buff[5]=;和char buff[5]=;是兩個完全不同的概念:

char buff[5]=;的賦的是乙個字串的結束符,而不是乙個字元'0';

char buff[5]=;才是給第乙個字元賦值為'0'。

大家喜歡用char buff[5]=;主要是想製造乙個空的字串,你除錯一下就知道了:

如果這樣寫:

#include

void main

;printf("%s",buff);

}是沒有任何輸出的,因為printf遇到的buff的第乙個字元就是個字串的結束符'\0'

而如果這樣寫:

#include

void main

;printf("%s",buff);

}才會看到輸出了乙個'0'

這才是你理解的給第乙個單元賦值為『0』。

char buff[5]=;是一種定義空字元陣列的嚴謹的寫法!

18樓:

一、全域性或靜態陣列

char gbuf[5] = ; // 第乙個元素gbuf[0] = 0,後續4個單元都會被置成0

二、函式區域性陣列

int func()

; // 第乙個元素gbuf[0] = 0,後續4個單元隨機值(編譯器相關)

}字串義'\0' == 0結束,字元陣列buf第乙個元素為結束符,代表buf儲存內容為空字串。

C中陣列疑惑,C語言陣列問題

陣列有分動態陣列和靜態陣列 動態陣列,是指數組的元素個數,不是宣告的時候就定下來,比如int a new int i 這裡的i也是變數,有可能為1,也可能為10。靜態陣列,是指宣告的時候,元素的個數就確定下來了,比如int a 10 c語言中都是靜態陣列,c 中才有動態陣列的概念。樓主所說的並不是我...

c語言陣列的下標總是從0開始嗎,C語言陣列的下標總是從0開始嗎

是的,對陣列a max max是乙個編譯時可知的值 來說,它的第乙個和最後乙個元素分別是a o 和almax 1 在其它一些語言中,情況可能有所不同,例如在basic語言中陣列a max 的元素是從a 1 到a max 在pascal語言中則兩種方式都可行。注意 a max 是乙個有效的位址,但該位...

關於c語言二維陣列的問題,C語言中二維陣列的定義問題

a是乙個一維陣列,陣列裡的值是指標,指向的還是一維陣列。即等價於,int x 2 2,0 int y 2 4,8 int a 2 x,y 我想你應該知道答案了。c語言中二維陣列的定義問題 正確寫法如下 char fd jgf1 maxitemlen 1 說明 把null去掉 1.二維陣列的第乙個維度...