1樓:呵呵信信
不要誤導人了
對於字元陣列,其長度是固定的,其中任何一個陣列元素都可以為 null 字元。因此,字元陣列不一定是字串。
對於字串,它必須以 null 結尾,其後的字元不屬於該字串。字串一定是字元陣列,它是最後一個字元為null
舉個例子,以下是用於存字元陣列a【】的記憶體單元
\0\0\0\0\0\0\0
顯然它不是一個字串,不要理解字串是一堆字串起來,字串在記憶體空間中的標誌是‘\0’結尾,所以,以下字元陣列b【】的儲存空間中
ab/0ab(a、b用asc\\存進去)
不全是字串,只ab\0是
明白否?
選擇題這麼做一做得了,有些書直接認字元陣列裡存的就是字串,死扣這個沒意義,壓根用不到
陣列a:char a=要幾個輸幾個
2樓:
程式裡存的“字元”其實只是它的ascii碼值,那個值只不過是一個無符號整數。所以,字串裡能放整數能表示的所有東西,當然,有個長度的限制,ansi中一個“字元”是8為,unicode中一個“字元”16位
3樓:匿名使用者
字元陣列可以轉化為你想要的任何型別的陣列,,字元陣列可以強轉為int float,等等 ,只是編碼的問題,
4樓:社南桖邇
你說的是哪類字元陣列,像string一類的話應該只能是字串了吧,不過如果是char,那就不一定了,char本身當有符號的8位整數變數來用也是可以的嘛
請問字串和字元陣列的區別是什麼?
5樓:a羅網天下
區別一:定義不一樣
1、字串指標變數本身是一個變數,用於存放字串的首地址。字串本身是存放在以該首地址為首的一塊連續的記憶體空間中並以‘\0’作為串的結束。
2、字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。
區別二:對字串指標方式不同
1、char *ps=”c language”;可以寫成char *ps;ps=”c language”;
2、陣列方式char st=;不能寫成char st[20];
st=;只能對字元陣列的各元素逐個賦值。
字串主要用於程式設計,概念說明、函式解釋、用法詳述見正文,這裡補充一點:字串在儲存上類似字元陣列,所以它每一位的單個元素都是可以提取的。
如s=“abcdefghij”,則s[1]=“b”,s[9]="j",而字串的零位正是它的長度,如s[0]=10(※上述功能ansistring沒有。),這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入陣列。
字串資料型別是建模在形式字串的想法上的資料型別。字串是幾乎在所有程式語言中可以實現的非常重要和有用的資料型別。在某些語言中它們可作為基本型別獲得,在另一些語言中做為複合型別獲得。
多數高階語言的語法允許通常用某種方式引用起來的字串來表示字串資料型別的例項;這種元字串叫做“文字”或“字串文字”。
6樓:匿名使用者
1、結束標誌不同
字串:必須以'\0'結尾;// ‘ \0 ’ 的意義是“字串結束符”。
字元陣列:可以包含多個'\0',但是如果當做字串處理,則實際有效字串為第一個'\0'的簽名的字串,如果當做字元陣列處理,可以處理字元陣列的任何一個字元,所有的字元都可以是'\0'。
2、特點不同
字串在儲存上類似字元陣列,所以它每一位的單個元素都是可以提取的,如s=“abcdefghij”,則s[1]=“b”,s[9]="j"。
而字串的零位正是它的長度,如s[0]=10(※上述功能ansistring沒有。),這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入陣列。
字元陣列是指用來存放字元資料的陣列。其定義的一般形式為: char 陣列名[資料長度] 。
字元陣列用於存放字元或字串,字元陣列中的一個元素存放一個字元,它在記憶體中佔用一個位元組。c語言中沒有字串型別,字串是存放在字元型陣列中的。
7樓:莫扣曲
贊同以上的網友說的處理方式不同,我來完善一下。
一、字串
"abc"//這是一個字串常量(也叫字串字面量)
上面的例子就是一個字串,看似其有3個字元,實際上的處理是4個字元,包括c後面的'\0'字元也就是空字元null。編譯器遇到空字元就結束處理了。
在程式設計中也可以把字串放到字串陣列當中處理:
char str1 = "abc";//編譯器會自動計算字串的長度
char str2[20] = "abc";//這是一個字串陣列
用雙引號括起來的內容被視為指向該字串儲存位置的指標,類似於把陣列名作為指向該陣列位置的指標。
也可以這樣初始化一個字串陣列:
char str3 [4] = ;//字串的陣列的長度要確保比字串長度多1以便為了容納'\0'
注意:沒有最後的空字元,這就不是一個字串,而是一個字元陣列,所有未被初始化的元素都被自動初始化為空字元'\0'。
不要這樣初始化字串陣列:
char dont = ;
這樣編譯器會不知道從**停止,直到找到記憶體中最近的一個空字元,好在記憶體中空字元很多,不會花費太長時間。
二、字元陣列
字元陣列與字串陣列的最大區別是處理範圍不同,字串陣列遇到空字元便結束,而字元陣列可以根據程式設計者的需要控制處理的長度。但是和字串陣列一樣的是,字元陣列的最後一個字元也一定是空字元,如下的初始化無法通過編譯:
char str4 [1] = ;//錯誤:初始值設定太多
宣告陣列時(包含字元陣列),陣列大小必須是可求值的整數。在c99新增變長陣列之前,陣列的大小必須是整型常量,包括由整型常量組成的表示式。
int n = 8;
char str5[2*sizeof(int)+1];//有效
char str6[n];//c99後有效的變長陣列
在不越界的情況下,開發者可以根據需要程式設計處理字元陣列。
與處理字串不同,碰到空字元編譯器會繼續處理空字元後面的資料。
例如:char str7 [3] = ;
str7[1] = 'b';
8樓:不懂多來問問
區別嗎 字串有結束符,字元陣列沒有結束符(自己可以加上,如果是用系統函式輸入的,系統會自動加)。總的來說是沒有區別的,字串就是以字元陣列形式儲存的。你可以把一個字串看成是一個字元陣列,可以按陣列那樣操作。
兩者沒有本質的區別,只是在不同的情況下有不同的叫法。
樓下說的字串類,其實就是對字串的封裝,加上了一些對字串的操作方法,其內部字串的儲存格式在本質上沒有改變,就像資料結構一樣,字串的儲存可以有很多種(像陣列,連結串列,如果可以用樹結構也沒關係),然後再加上一組對字串結構的操作函式。所以從陣列結構來說,字串和字元陣列沒有本質上的區別,如果是連結串列或其它結構,也可以做到在最上層的操作是一樣,至於低層的結構,完全可以對使用者 無關。
9樓:匿名使用者
瞭解不多。二者裝載有樣多字元時,用函式strlen()返回的長度不同,且字串的長度比字元陣列長度大1。這是因為在初始化時,字串是以指標標記其起始地址,而陣列則以陣列名標記的,陣列名是常量,不像指標那樣可以使用++或--使其指向不同位置的字元。
作為實參傳遞給函式時,無論是字元陣列,還是字串,一律以指標方式傳遞,這個指標包含字串的首地址,且字串的末尾加上串結束符'\0',所以,無論呼叫strcpy()函式,還是strcat()等其他任何函式,字元陣列和字串的呼叫沒有任何區別。
10樓:匿名使用者
字串:必須以'\0'結尾
字元陣列:可以包含多個'\0',但是如果當做字串處理,則實際有效字串為第一個'\0'的簽名的字串,如果當做字元陣列處理,可以處理字元陣列的任何一個字元,所有的字元都可以是'\0'
假設一個字元指標指向字串“aaaaaa”,如果通過指標下標是第三個a為'\0',則字元指標就只有三個長度,如果你的下標超過3則越界,字元陣列只要不超過陣列大小就不越界
字元陣列和字串的區別?
11樓:匿名使用者
字元陣列沒有結束標誌'\0',而字串則在末尾有結束標誌'\0'
在c中,字串就是末尾有字串結束標誌'\0'的字元陣列。
如果用gets()輸入,則會自動在末尾加上結束標誌'\0'
12樓:
c語言中應該是沒有字串這種資料型別的,它只有字元型別,字串也就是字元陣列。不過gets()可以用來接受字串,但它需要提供字串的指標。
子函式在呼叫主函式中的字串的時候可以逐個呼叫。
不過在宣告的時候要宣告成字元陣列,不要只用字元指標,這樣的話會比較危險。。。
13樓:馮人扶秀蘭
最為明顯的差別是二者裝載有樣多字元時,用函式strlen()返回的長度不同,且字串的長度比字元陣列長度大1。這是因為在初始化時,字串是以指標標記其起始地址,而陣列則以陣列名標記的,陣列名是常量,不像指標那樣可以使用++或--使其指向不同位置的字元。
14樓:璩楚扈鴻振
字元指標中存的是字串第一個字元的首地址。而字元陣列中存的整個字串字元陣列只能在定義是進行初始化;
char
a="abc";不可以char
a[10];a[10]="abc"
而字元指標可以
char
*p="abc";可以char
*p;p="abc";
15樓:鄲娜遊春嬌
有區別的
字元指標中存的是字串第一個字元的首地址。而字元陣列中存的整個字串字元陣列只能在定義是進行初始化;
char
a="abc";不可以char
a[10];a[10]="abc"
而字元指標可以
char
*p="abc";可以char
*p;p="abc";
c語言字串陣列和字元陣列有什麼區別?
16樓:芒素蘭勵鳥
這個是字元陣列,沒有字串陣列這種說法的。。
char
a[]="abcd";就是可以用字串給字元陣列初始化
17樓:僑有福泥月
這個是字元陣列。
c語言字元陣列和字串的區別,字元陣列是一個儲存字元的陣列,而字串是一個用雙括號括起來的以'\0'結束的字元序列,雖然字串是儲存在字元陣列中的,但是一定要注意字串的結束標誌是'\0'。
總的來說是沒有區別的,字串就是以字元陣列形式儲存的。可以把一個字串看成是一個字元陣列,可以按陣列那樣操作。兩者沒有本質的區別,只是在不同的情況下有不同的叫法。
字元指標,字串和字元陣列的區別
定義 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 每行結尾的 僅僅是為了連線字串使用的,如果一個字串過長,寫在一行比較不合適,就在該行結尾處加上一個反斜槓 就可以在下邊的行繼續寫這個字串...
任意輸入字元組成字串,對該字串中的字元按ASCII碼值升序排列後輸出,程式設計實現此功能
在手機知道中已有 知道君 正確的回答,電腦中為何看不見呢 public class form1 不限制輸入的字元個數 private sub button1 click byval sender as system.object,byval e as system.eventargs handles...