char aABCDEFchar aABCDEFa和b陣列長度比較

2021-03-21 15:56:07 字數 2891 閱讀 3246

1樓:

前者為7個字元,a b c d e f 空字元

後者為6個字元:a b c d e f

2樓:匿名使用者

a陣列是字串陣列。長度是sizeof(a)=7//包括a,b,c,d,e,f,'\0'。這個'\0'是在編譯的時候編譯器給加進去。用以限定字串的邊界。

b陣列是普通的字元陣列。長度是sizeof(b)=6//包括包括a,b,c,d,e,f。

3樓:匿名使用者

有意思。怎麼一天遇到兩個類似的問題呢?好吧,在這重複一遍:

在c中,字元和整數並沒有什麼本質的區別。char可以看成是1個位元組的整數,short可以看成2個位元組的寬字元,int可以看成4個位元組的寬字元。

所以,'a'表示一個字元'a','ab'則表示一個2個位元組的整數或者寬字元,'abcd'則表示一個4個位元組的整數或寬字元。但是隻支援1位元組、2位元組、4位元組。

char c='a'; //當然沒錯了

char c='ab'; //相當於整數 char c=0x6162。因為'a'字元表示0x61,'b'字元表示0x62。但因為'ab'是2個位元組,所以賦給char時會出整數截斷的警告。

char c='abc'; //相當於整數char c=0x00616263,也會出警告。

char c='abcd'; //相當於整數char c=0x61626364,也會出警告。

char c='abcde'; //超出最大整數字節長度4。當錯誤處理

對兩個陣列a和b進行如下初始化: char a[] = 「abcdef」; char b[] = {『a』,『b』,『c』,『d』,『e』,『f

4樓:蒼穹夜光

要不這樣理解吧

首先a作為字串長度為6;

作為字元陣列有7個元素,包含\0,a陣列的長度為7;

b是字元陣列有6個元素,不是字串,b陣列的長度為6;選d

5樓:匿名使用者

"abcdef」;是字串,字串預設是有字串結束符的。

所以選d

6樓:匿名使用者

樓主首先要明白的是什麼是長度。陣列元素的個數稱之為陣列的長度。

現在再看看問題 第一個是 字串,第二個是字元陣列 ,字串以'\0'為結束符號,字元陣列不用。

那就很明白了。b 對。

要說明的是,雖然他們長度相同,不過佔的記憶體位元組數是不一樣的,第一個佔7個位元組(後面的'\0'佔一個。)第二個佔6個位元組。

7樓:酷兒

#include

void main()

;m=sizeof(a);

n=sizeof(b);

printf("a 所佔位元組數 %d,b 所佔位元組數 %d\n",m,n);

}所以選d

8樓:用飄柔洗腳丫

#include

#include

using namespace std;

int main();

cout<:67

答案自己猜

9樓:喜歡種蘑菇

答案是d,a陣列比b陣列長度長

原因:a陣列的長度是6,b陣列的長度是7。

在c語言中沒有專門的字串變數,通常用一個字元陣列來存放一個字串。字串總是以'\0'作為串的結束符。

因此當把一個字串存入一個陣列時,也把結束符 '\0'存入陣列,並以此作為該字串是否結束的標誌。

即陣列a的實際存放情況為:a b c d e f '\0'  而陣列b的實際存放情況為:a b c d e f

詳細說明:

把一個字串賦值給陣列:u4 str1=;

實際上陣列str1在記憶體中的實際存放情況為: c x k n m s l '\0'

這後面的'\0'是由c編譯系統自動加上的。所以在用字串賦初值時一般無須指定陣列的長度, 而由系統自行處理。

把字元陣列str1中的字串拷貝到字元陣列str2中,串結束標誌'\0'也一同拷貝。

個案:1、當陣列長度不夠。假設我們指定了陣列長度,如:u4 str1[7]=;

由於字元組str1的長度為7,所以後面的資訊會丟失,即'\0'丟失。

2、如果在給陣列賦值時,把每個字元單獨用引號括起來,也會丟失'\0'。

如:u4 str1=;

如果希望陣列以'\0'結束,則可以寫成以下三者之一:

u4 str1=; //字串賦值

u4 str1=; //人工新增

u4 str1[8]=; //故意給陣列預留一個空位

char a[]="abcde";和char b[]={'a','b','c','d','e'};的長度是a大於b是為什麼?而不是長度相等??

10樓:匿名使用者

char a="abcde"; //相當於a[6] ----- 最後一位儲存'\0'以表示結束;

char b=; //a[5]

在c語言中char a[]={'a','b','c'}和char a[]="abc"有什麼區別 它們各在記憶體裡佔多少和位元組

11樓:匿名使用者

char a= 這是一個字元陣列,佔3個位元組。 char a="abc" 則不同,它是一個字串,最後還有一個'\0'結束符,佔4個位元組

char x[ ]="abcdef"; char y[ ]={'a','b','c','d','e','f'};

12樓:拿主意的人

前者為7個字元,a b c d e f 空字元(\0)

後者為6個字元:a b c d e f

c語言陣列長度的問題,C語言陣列長度的問題

strlen函式並非用來求陣列長度,而是求字串中有效字元長度。您的定義 a 3 看上去是一個char型別陣列,但同時a也可以是一個字串,內容為 abc.之所以後面省略,是因為您的字串沒有結尾符 0 即這個字串在定義時未封閉。這導致 c 後面的內容被strlen函式計入字串長度。所以它在您的某一次執行...

定義一維整型陣列,長度為十,從鍵盤中輸入個數,找出該

參考 版 include int main 0 scanf d n for i 0 i 10 i if n a i if printf 1 n return 0 從鍵盤輸入10整數,放在一維陣列中.輸入一個整數,在陣列中查詢與其相等的數,並輸出其下標。否則輸出 1.使用for迴圈反來複呼叫scanf...

修路隊修一條路,已修長度和未修長度的比是1 5,再修490米後,已修長度和未修長度的比值是3,全長是多少米

當已修長度和未修長度的比是1 5時,已修長度佔全長的 1 1 5 1 6 已修長度和未修長度的比值是3時,它們的比是3 1,這是已修長度佔全長的 3 3 1 3 4 後來已修長度佔全長的份數比原來已修長度佔全長的份數多 3 4 1 6 7 12 全長是 490 7 12 840 米 3 4是修完49...