如何將字串分配給字元指標陣列

發布 科技 2024-07-20
11個回答
  1. 匿名使用者2024-01-31

    ls老天爺,想清楚,好,誤導人+回答問題,不好,,

    人們問,給字元指標陣列,陣列! ,賦值,而不是指標!

    好吧,最簡單的當然是初始化,char* strings = ;

    你說,如果你沒有通過初始化,那就乙個接乙個地分配值,char* strings[50];

    strings[0] = "12";

    strings[1] = "13";

    現在糾正ls的第二個問題,上來的時候需要分配空間嗎?

    char *p;

    p = (char*) malloc(sizeof(char) *100);分配的空間,p 是第乙個位址,即分配的空間,通過 p 訪問。

    p = "123";對不起,p 的值被覆蓋了,那麼之前分配的空間呢? ,記憶體洩漏;

    lz 來識別這些字串常量"12","23";編譯器本身會儲存它,只要我們知道它們的位址,我們就可以訪問它,我們不需要先分配空間; 但是,如果要修改這些字串,則需要先分配它們;

    如果是這樣,我該怎麼辦? 複製

    strcpy(s, t);將 t 字串複製到以 s 開頭的儲存區

    我感覺差不多完成了,LZ然後就明白了、、、

  2. 匿名使用者2024-01-30

    然後你必須用新的申請空間C++

    strings = new char[10];

    strings = "12";

    帶有 malloc 的 C 語言

    strings = (char *)malloc(10*sizeof(char));

  3. 匿名使用者2024-01-29

    需要初始化。

    以下是一些示例:char s[20]; s="helo";這是錯誤的,因為不能使用 assignment 語句將字串常量直接分配給字元陣列。

    char s[20];

    char ss="hello";

    s=ss;這也是錯誤的,因為你不能使用 assignment 語句將字元陣列直接分配給字元陣列。

    也就是說,字串的複製(在 C 中,但在 C++ String 類中,上述賦值是正確的)必須使用 strcpy() 函式實現。

    而 char a[ ]=“toyou” 是因為當我們宣告乙個陣列變數時,我們為它騰出空間並初始化它,使其符合 C 語法。 而且上面的不是語法上的。

  4. 匿名使用者2024-01-28

    正確的字元 *s 表示 s 是指標,s=“olympic” 表示 s 指向字串的第乙個位址。

    b 的錯誤在於 s 是乙個陣列,只能在初始化時定義,然後不能作為乙個整體賦值為左值,但它可以在其單個元素上操作,並且陣列 s 的空間太小而無法容納此字串,因為"olympic"實際上"olympic'\0'",因此您必須定義乙個 8 個位元組的空間。

    正確定義:char *s[8]=; 或者 char *s[8]="olympic";

    c 不帶大括號。

    D 的錯誤類似於 B。

  5. 匿名使用者2024-01-27

    d 正確。

    A 定義指標 S,但 S 沒有分配空間。

    b,空間不夠,應為char s[8];

    在 C 中,它類似於 A。

    d 為陣列賦值是正確的。

  6. 匿名使用者2024-01-26

    A、對、B、大小不夠、cd,都是基本表達錯誤。

  7. 匿名使用者2024-01-25

    A是對的,B是錯的,C是錯的,D是錯的。

  8. 匿名使用者2024-01-24

    1.字串可以理解為常量指標(address),指標的內容是連續字元的字串。

    2、char *s1="hello" ;字串被分配給指標,指示 s1 與"hello"字串指向同一位址。

    此表格也可以寫成如下:

    char *s1 ;定義指標變數 s1="hello";為指標變數賦值 3,char s2="hello";字串被分配給陣列,這種形式只有在定義變數 s2 時才能出現,並且不能單獨編寫。 表示它將"hello"hello 在 S2 陣列(包括字串終止符)中。

  9. 匿名使用者2024-01-23

    有兩種情況:

    一。 初始化:可以執行以下操作。

    chars[20]="hello

    worle!";實際字串不能大於 19,因為 0 會自動新增到 C 字串的末尾作為結束標記

    s="hello

    worle!";C 字串的長度根據實際長度增加 1(末尾為 0)

    s=;*字串陣列不會在任何地方新增 0*

    一般來說,前兩個就足夠了。

    二。 手動分配:可以執行以下操作。

    chars[20];

    scanf("%s",s);* 長度應小於 19 喔,不要忽略空格、製表符和回車符。

    或 gets(s); * 忽略格仔、製表符。 將 enter 換行作為結束標記,但不要檢查陣列越界*

    或 fgets(s); * 忽略格仔、製表符。 將 enter 換行作為結束標記,但檢查陣列是否越界*

  10. 匿名使用者2024-01-22

    我會扔一塊磚頭,帶路:

    第一種方式:在master變成物件後,再賦值。

    public

    voidsetvalueone()

    第二種方式:包括第一種方式。

    public

    voidsetvaluetwo()

    第三種方式:直接給出值。

    public

    voidsetvaluethree();

  11. 匿名使用者2024-01-21

    1.問題中的“每個單詞的位址”實際上是指單詞在檔案中的位置。 然後直接使用 unsigned

    word[10000] 儲存它。

    當然,最簡單的方法是在初始化時掃瞄整個文字並將檔案中的所有單詞載入到記憶體中。 使用 char[10000][200] 可以儲存整個文字,但更浪費記憶體,而 Zubyzuby 的動態記憶體分配方法可以減少記憶體浪費,因為大多數單詞都遠小於 200 個字元。

    如果仍想減少記憶體使用量,只需使用 unsignedword[10000] 儲存檔案中每個單詞的位置,每次比較時直接從檔案中讀取。 當然,這會使查詢速度變慢。

    3.為了進一步提高搜尋速度,您可以使用雜湊。

相關回答
9個回答2024-07-20

你學過C語言嗎?

首先:和ch有什麼關係,str是乙個指標,ch,是乙個陣列的第乙個位址,雖然這兩個位址可以是同乙個位址,但是它的含義卻大不相同,ch不能用陣列的名稱給它賦值,定義大小後,就想想你給10個孩子糖, 你不能只給第乙個,然後其他孩子會不理你,我不是說你也明白。 >>>More

10個回答2024-07-20

字串"the result is %d"這是存在於記憶中的全部內容。 >>>More

13個回答2024-07-20

string stra="abcdef";

string strb=""; >>>More

11個回答2024-07-20

必須明確的是,lz 引用的字串陣列是非常非規範的。 所謂"xx 陣列"就是這樣"以 xx 為元素的陣列",以便理解 LZ 的字串陣列的單詞"以字串為元素的陣列"應該理解的是,在C語言中只有儲存字元的變數,而沒有儲存字串的變數,即使儲存了,也只能儲存字串的第乙個位址,這種陣列稱為指標陣列,而不是字串陣列。 >>>More

5個回答2024-07-20

range(3,1) 是從 3 到 1。 從最後乙個開始遍歷可以: >>>More