c為字串陣列動態賦值的問題,C 為字串陣列動態賦值的問題

2021-05-05 17:03:36 字數 2740 閱讀 5052

1樓:匿名使用者

改用list吧.

方法一是沒有new(沒有分配空間)

方法二是在new的時候沒有指定大小,預設是0個元素,所以對其任意一個元素賦值都是越界.

在c#中,陣列一般用來存放大小確定的資料.

如果陣列大小未知,建議使用list<>.

lista=new list();

a.add("we");

messagebox.show(a[0]);

同時,你可以用a.toarray()來隨時轉換成string.

也可以listb=new list(a.toarray());將陣列資料初始化進list<>

2樓:輕輕去去去

首先將動態賦的值放入int b 中,即,int b=???

然後,string a = new string[b] ;

就可以了。

3樓:匿名使用者

方法2:

string a = new string ;

a[0] = "we";

你可以在方法2中宣告瞭a陣列後,a.lengh看看a有幾個元素。

4樓:匿名使用者

嗯,物件是需要new的,如果不new,就不知道陣列的長度。

如果本身是不定長的陣列,可以用list等資料結構來儲存。

5樓:

其它的都有人說了

b = a.split('|');

個是對b重新賦值了,也就等於重新new了一個陣列

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

6樓:大野瘦子

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。

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

三、需要注意的一些問題

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

7樓:

char a ="toyou";

這才是對的,要用雙引號。

這種方式叫初始化,是可以的,"toyou"這個字串放在資料區裡,在編譯階段就確定了。

a作為陣列名,它是一個常指標,不能改變所指向的地址,只能是&a[0]所以你在非宣告的地方用a="***",就相當於改變了常量的值,是不允許的。

8樓:

#include

int main()

9樓:豬頭或火寶寶

你好!!!

舉例如下:

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

char s[20];

char ss="hello";

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

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

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

請問c#如何向字串陣列賦值?

10樓:匿名使用者

// 使用 arraylist

using system.collections; //要加上此語句private void form1_load(object sender, eventargs e)

private void showstr(arraylist str)

] = ",i,str[i]);}}

11樓:匿名使用者

string str=null;

這裡宣告瞭一個為空的字串陣列,但是這個資料沒有例項化。

所以在給指定索引的陣列中某個字串賦值,將會報空值錯誤(「未將引用到物件的例項」)

只要將str陣列例項化一下就可以了。

如string str=new string;

12樓:

string str = new string[2];...

C語言字串陣列問題

c語言中,賦值 與 賦初值 又叫初始化 是不一樣的。在定義變數的同時賦值,叫賦初值,而定義後賦值就是普通的賦值了。你說的 不能用賦值語句將一字串常量或字元陣列直接賦值給一個字元陣列 這句話是說普通賦值的情況,也就是,不能定義一個字元陣列以後,再給他直接賦值。而 char s 12345 這個語句,是...

C語言中用動態陣列儲存長度未知的字串,應該怎麼使用malloc和realloc函式

char buffer buffer char malloc initialize size buffer char realloc buffer,initialize size add size 一般做法是設定一個初始值,再設定一個追加值。比如 p初始分配10個字元空間。當空間不夠用的時候,每次增...

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

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