[英]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;
請注意,您的代碼包含一個錯誤: count1
和count2
將從1變為Length / Height,這將跳過數組的第一個字節,並寫入一個超出其大小的字節。 在C / C ++中,數組索引從零開始,以長度-1結尾。我更正了上面代碼中的錯誤。
strcpy()
用於將字符串從內存中的一個位置復制到另一位置。 您要執行的操作不是復制字符串,而是分配單個char值(從概念上講,它的大小與int相同,除了它的大小*沒什么不同)。 C語言沒有本機字符串類型-而是使用連續的內存塊,這些內存塊以值為零的字節(空終止符)結尾。 以這種方式使用字符串是困難,痛苦且容易出錯的。 由於您的帖子帶有“ c ++”標記,因此我建議您將來在處理字符串時使用C ++標准庫的字符串類型。
*在某些平台上,int可能不超過char。
使用'*'
將字符括起來。
另外,使用簡單的賦值運算符=
進行字符賦值,如下所示:
array[count1][count2] = '*';
下標count1
和count2
從0
到Length-1
和Height-1
。
將數組逐個字符放在一起時, strcpy()
。
您所擁有的是char
數組的數組,但是您正嘗試復制char*
。
array[count2][count3] = '*';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.