簡體   English   中英

我在C ++中構建“ *”數組時遇到問題

[英]I have a problem building an array of “*” in C++

我有一個程序,其中包含以下代碼,用於構造星號數組:

char array[Length][Height];

for (int count1 = 1; count1 <= Length; count1++)
{
    for (int count2 = 1; count2 <= Height; count2++)
    {
        strcpy(array[count2][count3], "*");
        cout << array[count2][count3];
    }
}
cout << endl;

當我嘗試編譯程序時,收到以下輸出:

waves.cpp:48: error: invalid conversion from ‘char’ to ‘char*’
waves.cpp:48: error: initializing argument 1 of ‘char* strcpy(char*, const char*)’

輸出的“ char *”部分使我對指針進行了一些閱讀,雖然我理解了指針的基本原理,但實際上實現它們卻有些困難(我想這是閱讀和做某件事之間的區別) 。

如果有人可以告訴我這段代碼在哪里出錯,那么我可以將其用作工作示例,這將大大有助於我理解指針的使用。

嘗試這個:

char array[Length][Height];

for (int count1 = 0; count1 < Length; count1++)
{
    for (int count2 = 0; count2 < Height; count2++)
    {
        array[count1][count2] = '*';
        cout << array[count1][count2];
    }
}
cout << endl;

請注意,您的代碼包含一個錯誤: count1count2將從1變為Length / Height,這將跳過數組的第一個字節,並寫入一個超出其大小的字節。 在C / C ++中,數組索引從零開始,以長度-1結尾。我更正了上面代碼中的錯誤。

strcpy()用於將字符串從內存中的一個位置復制到另一位置。 您要執行的操作不是復制字符串,而是分配單個char值(從概念上講,它的大小與int相同,除了它的大小*沒什么不同)。 C語言沒有本機字符串類型-而是使用連續的內存塊,這些內存塊以值為零的字節(空終止符)結尾。 以這種方式使用字符串是困難,痛苦且容易出錯的。 由於您的帖子帶有“ c ++”標記,因此我建議您將來在處理字符串時使用C ++標准庫的字符串類型。

*在某些平台上,int可能不超過char。

使用'*'將字符括起來。

另外,使用簡單的賦值運算符=進行字符賦值,如下所示:

array[count1][count2] = '*';

下標count1count20Length-1Height-1

將數組逐個字符放在一起時, strcpy()

您所擁有的是char數組的數組,但是您正嘗試復制char*

    array[count2][count3] = '*';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM