簡體   English   中英

操作二維數組中的元素

[英]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[]代替,因為您不能將數組分配給另一個數組。

但是為什么?

那么,這意味着什么? 它應該復制元素嗎? 為此使用strncpymemcpy 還是應該以某種方式“重定向”先前的數組? 這沒有意義,因為數組只是 memory 的一個......除了修改它的內容之外,你能用它做什么? 不多,但是,您可以有一個指向該塊的指針,並將其更改為指向其他地方。

但是 arrays 和指針不是一回事嗎?

不!! 那為什么他們會有兩個不同的名字呢? :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.

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