![](/img/trans.png)
[英]“Invisible” error while manipulating 2d array. (0 errors, 0 warnings)
[英]Manipulating elements in a 2D array
我正在嘗試操作二維數組中的元素
#include <stdio.h>
main()
{
char arr[][30] = {"hello", "goodbye"};
printf("%s\t%s\n",arr[0], arr[1]);
arr[0] = arr[1];
printf("%s\t%s\n",arr[0], arr[1]);
}
incompatible types when assigning to type ‘char[30]’ from type ‘char *’
我是 C 的新手,並且來自 OO 背景,所以我對指針的了解仍然非常基礎。
我知道這可以使用指針數組來完成,但想知道如何使用 2D arrays 執行此操作
謝謝你的澄清
您需要char* arr[]
代替,因為您不能將數組分配給另一個數組。
那么,這意味着什么? 它應該復制元素嗎? 為此使用strncpy
或memcpy
。 還是應該以某種方式“重定向”先前的數組? 這沒有意義,因為數組只是 memory 的一個塊......除了修改它的內容之外,你能用它做什么? 不多,但是,您可以有一個指向該塊的指針,並將其更改為指向其他地方。
不!! 那為什么他們會有兩個不同的名字呢? :P Arrays 可以隱式衰減到指針(它們的第一個元素的地址),但它們不是一回事! 指針只是地址,而 arrays是數據塊。 除了隱式轉換之外,它們彼此沒有任何關系。 :)
arr[0]
本身就是一個數組。 C 不支持分配給 arrays。 如果您打算將數組arr[1]
的內容復制到數組arr[0]
中,請使用memcpy :
memcpy(&arr[0][0], &arr[1][0], sizeof arr[0]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.