1樓:匿名使用者
先糾正乙個錯誤,char str[3]=;/*用逗號隔開*/。
char str="abc"; 這個str占用4位元組,這是因為c字串,編譯器會自動加乙個'\0'。"abc"在記憶體中實際上是"abc\0",所以為四位元組。
char str[3]=; 這個容易理解,你定義時候已經定義為char [3],所以佔3位元組。
2樓:匿名使用者
str="abc",為陣列賦值而一種形式,即字串形式;它裡面個數隨未定,但有字串可推出。字串末尾結束標誌『、0』通常不寫出來,但占用乙個儲存單元。故為4;後面元素數為3;
3樓:情意綿綿d胸毛
char str="abc"與char str[3]=的大小比較?
char str="abc", 實際編譯器編譯時 陣列中的內容為 a b c \0
char str[3]= 陣列中內容為 a b c所以陣列空間大小不一樣
4樓:上上西
不知道你講的是哪方面的大小比較。
char str="abc"佔4個位元組,會自動加上'\0'作為字串的結尾。
char str[3]=佔3個位元組,就算你這樣寫:
char ch=;它還是佔3個位元組,這是逐個初始化的語法規定。
不知道我是不是牛頭不搭馬嘴。
char a[]="abc";char b[4]={'a','b','c','d'};哪個陣列長度長
5樓:思念天涯
如果不是動態開闢的陣列,你宣告的時候給多少長度就是多少長度。你使用 strlen 函式求嗎? strlen只能求字串長度,沒辦法求陣列長度。
strlen 是用 '\0' 來判斷字串的結束標誌的,所以第乙個短
6樓:金色潛鳥
佔記憶體單元,兩者都是4個,a 有乙個字串結束符。
用 sizeof(a) 和 sizeof(b) 計算它們 佔記憶體單元大小。
字串長度 a 是3, b 是4,
但b 不能用 strlen(b) 計算,因為它缺了字串結束符,strlen找不到字串結束符,得出的數值就不可靠了。
7樓:月球車飛翔
一樣長,都是4個字串,前面那個除了abc還有乙個結束符
8樓:匿名使用者
就只比較陣列長度的話,兩個一樣長吧。
在c語言中char a[]={'a','b','c'}和char a[]="abc"有什麼區別 它們各在記憶體裡佔多少和位元組
9樓:匿名使用者
char a= 這是乙個字元陣列,佔3個位元組。 char a="abc" 則不同,它是乙個字串,最後還有乙個'\0'結束符,佔4個位元組
static char a[ ]="abc" ; static char b[ ]={'a','b','c'} ; a和b陣列的長度比較
10樓:
static char a[ ]="abc" ; static char b[ ]= ;a,b陣列長度不等價,因為陣列a結尾多了乙個結束符("\0"),所以陣列a的長度比陣列b的長度大1.a陣列長度為4,b陣列長度為3.
11樓:
static char a[ ]="abc" ; 陣列長度為1
static char b[ ]= ;陣列長度為3
對兩個陣列a和b進行如下初始化: char a[] = 「abcdef」; char b[] = {『a』,『b』,『c』,『d』,『e』,『f
12樓:蒼穹夜光
要不這樣理解吧
首先a作為字串長度為6;
作為字元陣列有7個元素,包含\0,a陣列的長度為7;
b是字元陣列有6個元素,不是字串,b陣列的長度為6;選d
13樓:匿名使用者
"abcdef」;是字串,字串預設是有字串結束符的。
所以選d
14樓:匿名使用者
樓主首先要明白的是什麼是長度。陣列元素的個數稱之為陣列的長度。
現在再看看問題 第乙個是 字串,第二個是字元陣列 ,字串以'\0'為結束符號,字元陣列不用。
那就很明白了。b 對。
要說明的是,雖然他們長度相同,不過佔的記憶體位元組數是不一樣的,第乙個佔7個位元組(後面的'\0'佔乙個。)第二個佔6個位元組。
15樓:酷兒
#include
void main()
;m=sizeof(a);
n=sizeof(b);
printf("a 所佔位元組數 %d,b 所佔位元組數 %d\n",m,n);
}所以選d
16樓:用飄柔洗腳丫
#include
#include
using namespace std;
int main();
cout<:67
答案自己猜
17樓:喜歡種蘑菇
答案是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]=; //故意給陣列預留乙個空位
unsignedchar與char或者cstring如何互相
金色潛鳥 mfc,c 語言。cstring 是 mfc 裡的 class,不是 c c 的 基本變數。用 unsigned char 與 char 構建 cstring class 可以呼叫 成員函式 format 從 cstring 物件中提取 字串 存入 unsigned char 與 char...
varchar和char的區別,char 10 和VARCHAR 10 主要的區別是什麼?
char 和 varchar 固定長度 char 或可變長度 varchar 字元資料型別。char n 長度為 n 個位元組的固定長度且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為 n 個位元組。char 在 sql 92 中的同義詞為 chara...
c語言中int型變數與char型變數什麼情況下不能互換
其實這種問題,從表面說也沒有什麼特別的意義,因為本來就沒有什麼嚴格意義上的能不能互換的問題。只要能在使用過程中,滿足本來的要求就可以了。例如 在將int型變數轉換為char型時,要考慮到資料的溢位問題等 char轉換為int時,要考慮到它的符號問題。在根本上只要認清它們兩者之間的區別就可以了。int...