在C 中如何給字串陣列定義長度呢

2021-04-20 14:50:39 字數 3888 閱讀 1165

1樓:匿名使用者

在c++中給字串(陣列)定義長度時,首先要先確定待儲存的資料的最大可能長度,根據該長度進行陣列長度定義,其次,要記著字串是有結束符位置的,所以,在資料長度基礎上,要給字串結束符留個位置。如,

題目要求:

輸入資料不超過100個字元長度。

則變數定義為:

char data[100+1] ; //建議寫成+1這樣,表示有效資料為100個,一個是字串結束符位置

2樓:匿名使用者

char s[長度];

宣告的時候就限定了長度的

「c++」如何定義字串陣列?

3樓:愛在天空任飛翔

#include

#include

int main()

;for(int i = 0; i < 3; i ++){cout<

2.using namespace std;

千萬不要include string.h啦,string.h是c裡的字串庫,而string是c++庫,兩者沒有關係。這要弄明白連個庫有什麼不同,在網上搜搜就有。

c++裡的string是包含在std名稱空間裡的,所以要加上第二句。

4樓:娛樂小八卦啊

new 動態定義陣列。因為new 就是用來動態開闢空間的,所以當然可以用來開闢一個陣列空間。

這樣,下面的語句:

int size=50;

int *p=new int[size]; 是正確的。

首先 new int[size][column] 就是動態生成時確定的,所以它沒有錯。那麼就是 int(*p)[column],這句有問題了,這句為什麼不對呢, 那是因為,這是一個定義語句,而定義語句先經過編譯器進行編譯,當編譯器執行到此處時,發現column 不是常數,因此不能通過編譯。

而之所以編譯器認為column 不是常數,是因為編譯階段,編譯器起的作用是查語法錯誤,和預分配空間,它並不執行程式,因此,沒有執行那個賦值語句(只是對這個語句檢查錯誤,和分配空間),因此編譯階段,它將認為column 是個變數。

擴充套件資料

動態陣列的特點

陣列到底應該有多大才合適,有時可能不得而知。所以希望能夠在執行時具有改變陣列大小的能力。

動態陣列就可以在任何時候改變大小。在visual basic中,動態陣列最靈活、最方便,有助於有效管理記憶體。例如,可短時間使用一個大陣列,然後,在不使用這個陣列時,將記憶體空間釋放給系統。

如果不用動態陣列,就要宣告一個陣列,它的大小儘可能達到最大,然後再抹去那些不必要的元素。但是,如果過度使用這種方法,會導致記憶體的操作環境變慢。

每次執行 redim 語句時,當前儲存在陣列中的值都會全部丟失。visual basi 重新將陣列元素的值置為 empty(對 variant 陣列)、置為 0(對 numeric 陣列)、置為 零長度字串(對 string 陣列)或者置為 nothing(對於物件的陣列)。

在為新資料準備陣列,或者要縮減陣列大小以節省記憶體時,這樣做是非常有用的。有時希望改變陣列大小又不丟失陣列中的資料。使用具有 preserve 關鍵字的 redim 語句就可做到這點。

c++ 如何定義字串陣列?

5樓:

c語言字串陣列中的每一個元素均為指標,即有諸形如「ptr_array[i]」的指標。由於陣列元素均為指標,因此ptr_array[i]是指第i+1個元素的指標。

例:如二維指標陣列的定義為:char *ptr_array[3]=,,};

擴充套件資料

字串陣列陣列元素表示方法:

陣列元素的一般形式為:陣列名[下標] 其中的下標只能為整型常量或整型表示式。如為小數時,c編譯將自動取整。

例如,a[5],a[i+j],a[i++]都是合法的陣列元素。陣列元素通常也稱為下標變數。必須先定義陣列, 才能使用下標變數。

在c語言中只能逐個地使用下標變數, 而不能一次引用整個陣列。

6樓:匿名使用者

#include

using namespace std;

int main()

;char **p;

p=name;

cout<

cout<<*p<

cout<<**p<

cout<<*(++p)<

7樓:颯爽櫻風

c++里加上標頭檔案string.h

就可以直接用string str[10];這樣定義10個字串了定義時就可以賦值了。

如:string str[3]=;

你可以嘗試用cout<

8樓:金牛多弗朗明哥

方法1, 使用指標陣列:

#include

#include

#include

int main()

;int i=0;

while(strcmp(test[i], " ") != 0)

puts(test[i++]);

system( "pause ");

return 0;

}這個方法比較簡單, 但是問題是這樣的話,字串是常量,無法修改。當然這個問題也可以解決, 比如使用陣列賦值, 然後將 char 陣列首地址賦值給某一個指標即可。

方法2,使用2維陣列:

#include

#include

#include

int main()

;int i=0;

while(strcmp(test[i], " ") != 0)

puts(test[i++]);

system( "pause ");

return 0;

}這樣的話, 問題就是 空間的浪費!

9樓:愛在天空任飛翔

#include

#include

int main()

;for(int i = 0; i < 3; i ++){cout<

2.using namespace std;

千萬不要include string.h啦,string.h是c裡的字串庫,而string是c++庫,兩者沒有關係。這要弄明白連個庫有什麼不同,在網上搜搜就有。

c++裡的string是包含在std名稱空間裡的,所以要加上第二句。

10樓:

沒有字串陣列,只有字元陣列。

如以下的定義:

char c[6]=

char c[10]=;

char c=;

11樓:

c++ 怎麼還有 string ^ line這樣的語法?

標準c++,只有string。 s小寫

字串就是string,多個字串就是 vector

12樓:匿名使用者

就是二維陣列呀。如:

char s[10][100] = ;

13樓:匿名使用者

#include

int main()

; for (size_t i = 0; i < 2; ++i)printf("\n");

return 0;}

14樓:一千館原創短**

char username[n][4]=;

n是字串的個數

15樓:匿名使用者

字串陣列也能定義?

陣列長度和字串長度

你記bai住兩點 1.c風格字元du串只要是使用雙引號 半zhi角 的,都會以 0結束dao,就是說會多出版一個字元。權2.凡是陣列沒有指名大小的定義,全部都會以賦值號右邊的初始化長度作為陣列預設大小。那麼你的問題解答如下 字串 abcd 長度為4,是因為字串長度指的是字串中有效字元的個數,不包含c...

C中如何分割字串C中如何分割字串,例如將某個帶著路徑的檔名的字串分割後只得到最後的檔名。。。

可以用split。比如你先定義一個字串物件 string str a,b,c,d,e,f,g 然後你再定義一個陣列 string words str.split 這段 就是把str按照逗號進行分割,也就是把str分割成a和b和c和d和e和f和g儲存在你定義的字串陣列words中,此時words 0 ...

C 字串陣列如何作為函式引數

sizeof string 由於它們都是和系統相關的 我的作業系統是32位的 所以在不同的系統下取值可能不同,這務必引起注意,儘量不要在這方面給自己程式的移植造成麻煩。一般情況下,在32位系統中,sizeof string 為16位元組。sizeof都和記憶體中的儲存方式有關。你這裡沒有理清楚陣列函...