字元陣列char name 20 是不是name一定要20個字元

2025-02-21 15:00:07 字數 5083 閱讀 4455

1樓:善秋芹莫鵑

不是,char

name[20];

說明字元陣列name,20表示陣列的長度,有20個元素。賦值時不一定要20個全部都賦值。

name[20]元素的範圍為name[0]——name[19]。還有char

name[20]若沒有對它進行初始化,編譯器會自動將他初始化為隨機字串的形式。要搞清楚陣列的長度、字串長度。

例如:char

a[10]="abcdei";

陣列長度為10;

字串長度為6;

字串所佔記憶體為7;(因為字串的話,因為結尾有個\0)c語言不能定義未知長度的陣列,更不能給未設定長度的陣列賦值。

2樓:桐菊汗姬

表示最多可以存20個字元,如果是字串的話,因為結尾有個\0,所以字元數做多為19

3樓:獨奕聲釗鸞

你這個是陣列了。

代表的含有20個元素。

我隨便寫舉個例子。name[20]=

裡面就有20個數字。

4樓:崔玉巧求香

那個20表示最多可以包含20個字元。

你可以輸入。

個字元。

5樓:支景明孔茶

巨集定義也是定義為字元陣列的。

字元陣列或位元組陣列可以通用。

6樓:網友

表示最多可以存20個字元,如果是字串的話,因為結尾有個\0,所以字元數做多為19

7樓:

20 個字元,包括乙個字串結尾 '\0' ,只能輸入 19 個字元。

8樓:乙個男人蕩天涯

你這個是陣列了 20 代表的含有20個元素 。我隨便寫舉個例子。name[20]= 裡面就有20個數字。

9樓:網友

那個20表示最多可以包含20個字元。

你可以輸入 0 ~ 20 個字元。

char name[20]是陣列還是字串?

10樓:太叔靜逸牧蕩

char

name[20]是。

char陣列它存放的內容可以看成。

1byte的char

型陣列元素,或。

1byte的整型。

陣列元素。初始化:

charname[20]="abcd_1234";

語句:strcpy(name,"abcd_1234");

語句:for

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

name[i]

a'+i;name[4]='_';

for(i=5;i<8;i++)

name[i]

1'+i5;語句:

printf("%s",name);

c++中定義char name[20]後,為什麼用printf("%s",name)就能輸出一連串字串?

11樓:網友

%s代表bai字串,name是字元陣列。

的首位址du,也就是字串zhi的首位址。dao所以直接專輸出字串。

c++中定義屬char型陣列即是定義c風格字串。

格式化輸出函式printf第乙個引數中%s代表可變引數部分中對應位置變數為指向字串位址的指標。

在c/c++中陣列的名是儲存該陣列首位址的常量。

需要注意:1)c++中定義內建型別區域性陣列變數,不提供預設初始化。這裡char是內建型別,如果不初始化其中儲存的是記憶體中的隨機數。

2)c++不會對陣列進行越界檢查,而是將越界交給os,如果os檢測記憶體不可讀或寫,對齊進行讀寫os核心會丟擲中斷異常。

3)c++中c-style字串讓然是以'\0'空字元為結束標誌。printf中的%s仍然會在輸出的時候從name指定的記憶體位置開始讀取資料再交給現存快取以在顯示器上顯示。不初始化或不以'\0'結尾的字串將輸出亂碼,這是如果越界讀取到了不可讀的記憶體,將會報段錯誤(unix核心)或記憶體不可讀(windows)異常以終端程式。

12樓:

%s的概念 就是輸出字串。

字串必須要以'\0'結尾。

也就是如果你。

的name[20]中有乙個位置是'\0'的話專printf("%s",name)就能正確輸出如果你是這樣屬char name[20]=;由於name陣列中沒有'\0'你對name指標用printf函式就會出錯。

13樓:網友

%s是從起始位置輸出字元直到遇到\0為止,合法,陣列在函式中做實參時會轉成指標。

14樓:網友

1,%s 是輸出字串;%c,只輸出單個字元。

2, 定義name是陣列,name表示陣列的第乙個字元的位址。

15樓:網友

陣列傳遞給printf函式當引數時,自動退化成指標,printf函式輸出指標指向空間,預設到'\0',結束,所以合法。

16樓:wang非在心上

這個復就不需問為什麼啦!!因製為這是它的功能bai啦!!就像1+1為什麼等於du2了。你只需要zhi記住它的作用就是dao 用來輸出資料的!!

那個%s是格式識別符號啦!!就是規定後面的引數是以怎樣的格式輸出的!!另外還有其他幾種常用格式識別符號,%c、%d、%o

17樓:網友

printf函式本來就是c中的函式 。。

char name[20]; 對這個結構體定義進行解釋說明

18樓:眭凝雁東念

char

name[20];是一句變數定義語句,該變數定義語句描述了乙個陣列(array),即這樣乙個陣列:

該陣列由20個char型別的變數組成,陣列名為name,並且這個陣列可能會被用來存放某東西的長度不超過19的名字字串。

c語言規定陣列在記憶體中是一段連續的有序的記憶體儲存空間。

上面那語句就是。

表示將要使用這樣的形式的空間,這個空間由20個大小為1位元組的小空間組成,因此這個空間的總共大小以位元組單位計有20,以位單位計有160。

19樓:尤銘衣理

這是定義了乙個陣列不是結構體,char是型別name是陣列名20代表陣列元數的個數也可以說陣列的長度。

20樓:保湛霞蕢醉

你要什麼說明,建立乙個型別為char的名為name的長度為20的陣列?

字元陣列賦值的問題

21樓:俎飲桑志澤

變數賦值好比提籃子買菜,只要籃子能裝下菜,就可以用。(籃子=變數,菜=值)

char型別只佔乙個位元組。

int佔四個位元組(32位機)

所以,len=buff[0];//這個是將字元陣列中的第乙個字元賦給乙個整型變數。

len?合理、合法。

22樓:鐵恨嶽秀慧

len=buff[0];buff陣列初始化後,這樣賦值也沒什麼問題,畢竟整形範圍比char範圍大。

但是,傳給len的值是ascii碼。

23樓:網友

賦值可以直接 =「zhoujie」,這個函式是複製函式,是為了方便有時候在乙個陣列裡操作會改變我們不期望的改變,所以複製乙個副本。

字串和字元陣列幾乎差不多,所以可以char *s="afasfasf",s="asfdasf",也可以單個元素賦值。

24樓:看看窗外飛仙

name是乙個陣列,指向一塊大小為20*sizeof(char)記憶體,用來儲存字元,這裡name是乙個靜態的,長度不可變的陣列,不是乙個通常意義上的指標,換句話說,這個指標只能指向這塊大小為20*sizeof(char)的記憶體,這個地方name不能被賦值,則必須使用strcpy把後面的字串中的字元乙個乙個複製到陣列中。

c\c++中通常意義上表示字串是使用的字元陣列,c\c++中的字串是一串以'\0'為識別符號的char型陣列,例如,char * p = "abcdefg",那麼p指向一串不可修改的char型陣列,char s[20] = 「abcdefg」相當於以下賦值:

char s[20] = ;

那麼使用printf對p和s進行輸出時(printf(p);printf(s))效果一樣。

只需記住c\c++中沒有字串這一獨立的資料型別,字串時使用字元陣列進行表示的即可。

25樓:網友

1,第乙個問題:strcpy

對於陣列來說,可以在定義的時候進行初始化直接賦值的,如struct stu student = ;

如果是先定義,再賦值就不行了,因為定義同時初始化是在編譯階落進行的。

而隨後的賦值是在執行期間,只能用函式進行字串的copy才行。

2,char name[20] = ;

和char name[20] = "zhoujielun";

是一樣的,只不過前者是乙個字元乙個字元的進行初始化;後者是近字串進行。它們都是在定義的時候進行初始賦值的。

字串都是以雙引號進行表示的】

strcpy(,「zhoujielun」);

26樓:網友

這些都是c語言中的規定,你可以再看一下c!希望 能幫助你!

c語言中用二維陣列輸入n個學生的名字,求**,不要,char name[n][20],總是說未

27樓:浮華落盡

這種陣列定義方式要求編譯的時候就要確定大小,即錯在n上,建議使用動態記憶體。

c語言相關 這個語句裡的[20]是什麼作用 ,第三行的char name[20],跟申明結構體陣列的數量有關係麼

28樓:網友

char name[20],// 20個char

struct stu stud[20]; // 20個 stu, 當然每乙個stu中有20個char

29樓:兩葉障目

name中的就是陣列的大小,,也就是你可以輸入最多20個字元,

字元指標,字串和字元陣列的區別

定義 char ch 10 char ch2 char str 以及 string 1.全域性的變數和函式內的static變數,存放在記憶體堆區域。2.全域性的陣列和函式內定義的static的陣列,存放在記憶體堆區域。3.區域性變數,陣列,存放在記憶體的棧區域。4.定義char ch 10 時,如果...

c語言字串陣列的問題C語言字串陣列的問題

include int main scanf s a for i 0 a i 0 i for j 0 j 5 j 修改 1 下標從0 4,共5個 return 0 每行結尾的 僅僅是為了連線字串使用的,如果一個字串過長,寫在一行比較不合適,就在該行結尾處加上一個反斜槓 就可以在下邊的行繼續寫這個字串...

C 中字元陣列0是什麼意思,在C 中字元陣列和字串有什麼區別

在c 中,只有數值在128以內的部分ascii碼char才能被顯示出來 char a 0 0 的ascii碼為48小於128是可以被顯示出來的,並且顯示為0 用單引號的寫法是由編譯器來幫你做字元轉換的,即把 0 轉換成了48放在一個char變數裡 char a 48 實際上我們可以這麼寫,同樣可以達...