請問,定義字元陣列,和字串有區別嗎,能舉個例子嗎

2021-04-20 14:05:09 字數 5440 閱讀 3443

1樓:匿名使用者

#include

int main ()

;char str2 = "hello";

printf("str1 length: %d, str2 length: %d", sizeof(str1), sizeof(str2));

return 0;}字元

duzhi串會自

dao動增加

專結束屬符'\0'

2樓:love寒憶

如果在c++裡的話。有一下幾個分別,用字元陣列可以找出其中的各個元素。用下標就可以了,字串是以\0結尾的。其他的麼。倒也沒什麼了,一般是用陣列吧。

3樓:零點駐足

uchar we=;

uchar we="0,1,2,3,4,5,6";

c++求解字串陣列和字串變數什麼區別,舉個例子區分下

4樓:匿名使用者

字串陣列是這樣定義的:

char *stringarray[3];

而字串變數是這樣定義的:

char s[10];

它們的區別就是字串陣列可以儲存的是多個字串,典型的例子就是main函式的第二個引數,main函式的第二個引數就是一個字串陣列,它用來讓系統傳遞命令列引數,命令列程式的每一個引數之間都是用空格分割的,每個引數都可以看作是一個字串,命令列程式都是有多個引數,所以要用字串陣列來儲存。而字串變數就很簡單了,字串變數只能儲存一個字串,是一個字元陣列,注意是字元陣列。如果從把它們倆都從字元陣列的角度上來看(一個字串就是一個字元陣列),字串陣列是二維的,而字串變數是一維的。

5樓:渺渺兮於懷

char* arr[20] = 「dasdasddasddasddasdd」

arr 是字串陣列 且表示字串首地址arr[20]表示 陣列 最有一位字元

且 arr[index] 相當於 1 2 3 4222 這些數字 是常量

所有 你對 arr[index] 賦值是錯誤的arr 也是字串變數

你不能對arr[index] 賦值

但你可以對 arr 賦值

arr =「qweqrtyuuyioo。。。」 讓這個變數 指向另外一個 字串

請問字串和字元陣列的區別是什麼?

6樓: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沒有。),這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入陣列。

字串資料型別是建模在形式字串的想法上的資料型別。字串是幾乎在所有程式語言中可以實現的非常重要和有用的資料型別。在某些語言中它們可作為基本型別獲得,在另一些語言中做為複合型別獲得。

多數高階語言的語法允許通常用某種方式引用起來的字串來表示字串資料型別的例項;這種元字串叫做「文字」或「字串文字」。

7樓:匿名使用者

1、結束標誌不同

字串:必須以'\0'結尾;//  『 \0 』 的意義是「字串結束符」。

字元陣列:可以包含多個'\0',但是如果當做字串處理,則實際有效字串為第一個'\0'的簽名的字串,如果當做字元陣列處理,可以處理字元陣列的任何一個字元,所有的字元都可以是'\0'。

2、特點不同

字串在儲存上類似字元陣列,所以它每一位的單個元素都是可以提取的,如s=「abcdefghij」,則s[1]=「b」,s[9]="j"。

而字串的零位正是它的長度,如s[0]=10(※上述功能ansistring沒有。),這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入陣列。

字元陣列是指用來存放字元資料的陣列。其定義的一般形式為: char 陣列名[資料長度] 。

字元陣列用於存放字元或字串,字元陣列中的一個元素存放一個字元,它在記憶體中佔用一個位元組。c語言中沒有字串型別,字串是存放在字元型陣列中的。

8樓:莫扣曲

贊同以上的網友說的處理方式不同,我來完善一下。

一、字串

"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';

9樓:不懂多來問問

區別嗎 字串有結束符,字元陣列沒有結束符(自己可以加上,如果是用系統函式輸入的,系統會自動加)。總的來說是沒有區別的,字串就是以字元陣列形式儲存的。你可以把一個字串看成是一個字元陣列,可以按陣列那樣操作。

兩者沒有本質的區別,只是在不同的情況下有不同的叫法。

樓下說的字串類,其實就是對字串的封裝,加上了一些對字串的操作方法,其內部字串的儲存格式在本質上沒有改變,就像資料結構一樣,字串的儲存可以有很多種(像陣列,連結串列,如果可以用樹結構也沒關係),然後再加上一組對字串結構的操作函式。所以從陣列結構來說,字串和字元陣列沒有本質上的區別,如果是連結串列或其它結構,也可以做到在最上層的操作是一樣,至於低層的結構,完全可以對使用者 無關。

10樓:匿名使用者

瞭解不多。二者裝載有樣多字元時,用函式strlen()返回的長度不同,且字串的長度比字元陣列長度大1。這是因為在初始化時,字串是以指標標記其起始地址,而陣列則以陣列名標記的,陣列名是常量,不像指標那樣可以使用++或--使其指向不同位置的字元。

作為實參傳遞給函式時,無論是字元陣列,還是字串,一律以指標方式傳遞,這個指標包含字串的首地址,且字串的末尾加上串結束符'\0',所以,無論呼叫strcpy()函式,還是strcat()等其他任何函式,字元陣列和字串的呼叫沒有任何區別。

11樓:匿名使用者

字串:必須以'\0'結尾

字元陣列:可以包含多個'\0',但是如果當做字串處理,則實際有效字串為第一個'\0'的簽名的字串,如果當做字元陣列處理,可以處理字元陣列的任何一個字元,所有的字元都可以是'\0'

假設一個字元指標指向字串「aaaaaa」,如果通過指標下標是第三個a為'\0',則字元指標就只有三個長度,如果你的下標超過3則越界,字元陣列只要不超過陣列大小就不越界

c++求解字串陣列和字串變數什麼區別,舉個例子區分下,,

12樓:

using namespace std;

int main()

;char *pc="12345678";

cout << c << endl;

cout << pc << endl;

return 0;

}區別只是宣告的形式不同。用起來都一樣。

c語言中將字串賦值給字元陣列的問題

13樓:大野瘦子

char s[20];s="helo";這樣錯誤的原因就是:不能用賦值語句將一個字串常量直接給一個字元陣列賦值。

char s[20];

char ss="hello";

s=ss;錯誤原因是:不能用賦值語句將一個字元陣列直接給一個字元陣列賦值

,即字串的複製(c語言中,但是在c++的string 類,上面的賦值是正確的)必須用strcpy()函式實現。

而char a[ ]=」toyou「;正確的原因是:因為在宣告陣列變數的時候就是,為其開闢空間,併為其初始化,這樣才是符合c語言語法的。

c語言中字串賦值的理解

一、指標式賦值

上面的示例是顯然可以正常執行的,也是很容易理解的。但是下面這種方式就令人有點難以理解了。

通過程式的運**況,我們可以知道:char *p = "hello";這種字串的賦值方式是完全沒有問題的。要理解這種賦值方式,我們首先得理解雙引號(特別注意:

這個是雙引號,不要賦值的時候給弄了個單引號)在這個語句中做了什麼工作。雙引號主要做了3個工作,分別是:

(1)申請了空間(在常量區),存放了字串。

(2)在字串尾加上了「\0」。

(3)返回地址。

這裡所返回的地址就賦值給了char *型別的指標變數p。

二、通過字元陣列直接把字串賦值。程式如下:

三、需要注意的一些問題

直接把字串賦值給陣列名(也就是陣列首元素的首地址)是不行的。

c 中字元陣列,如何轉成字串啊

如果你想把一個字串變成陣列,你只需要將字串初始化為陣列變數的值即可。例如 char c 10 this is 在c 裡字串在記憶體的儲存方式就是按字串陣列的形式儲存的,所以不用轉換!用cstring的getbuffer函式返回一個存放字元的頭指標,用一個char 來接受他,然後用下標操作就可以了。例...

C語言字串,求大佬,C語言字串陣列的問題

在語句for j 0 s j 0 j 中,j 記錄的是串s的字元個數,結束該迴圈時,s j 恰好是 0 在接下來的for迴圈中,第一個j 後,s j 是串s的最後一個字元,而i為0,迴圈體將s 0 與s j 進行交換,第二個j 是正常遞減,以便與i 相對應,交換s i 和s j 沒那個程式之類執行不...

編寫自定義函式,實現給定字串,得到字串的長度,並將其中的

include include char a 101 void f int n int main void f int n n for i 0 i n i printf n字串長度為 d n 1 測試 如果有不清楚的地方還請指出回我會改正答 設計函式實現將一個字串中的小寫字母轉化為大寫字母 char...