簡體   English   中英

Objective-C:如何正確初始化char []?

[英]Objective-C: How to correctly initialize char[]?

我需要一個char []數組並將它的值復制到另一個,但我每次都失敗了。

它使用以下格式:

char array[] = { 0x00, 0x00, 0x00 }

但是,當我嘗試這樣做時:

char array[] = char new_array[];

即使new_array和原版一樣,它也會失敗。

任何幫助將不勝感激。

謝謝

要在運行時復制,通常的C方法是使用strncpymemcpy函數。

如果你想在編譯時將兩個char數組初始化為同一個常量初始化器,你可能會堅持使用#define

#define ARRAY_INIT { 0x00, 0x00, 0x00 }
char array[] = ARRAY_INIT;
char new_array[] = ARRAY_INIT;

事實是,很少這樣做,因為通常有更好的實現。

編輯:好的,所以你想在運行時復制數組。 這是通過memcpy完成的,它是<string.h>一部分(所有地方)。

如果我正確地讀你,你有這樣的初始條件:

char array[] = { 0x00, 0x00, 0x00 };
char new_array[] = { 0x01, 0x00, 0xFF };

然后你做一些事情,更改數組的內容,完成后,你想設置array以匹配new_array 就是這樣:

memcpy(new_array, array, sizeof(array));
/*        ^         ^          ^
          |         |          +--- size in bytes
          |         +-------------- source array
          +-------------------------destination array
 */

庫編寫者選擇首先使用目標對參數進行排序,因為它與賦值中的順序相同: destination = source

沒有語言級內置方法可以使用這樣的原始數組在C,Objective-C或C ++中復制數組。 C ++鼓勵人們使用std::vector ,Objective-C鼓勵使用NSArray

不過,我仍然不確定你想要什么。

暫無
暫無

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

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