![](/img/trans.png)
[英]How to initialize a MPSMatrixMultiplication in Objective-C?
[英]Objective-C: How to correctly initialize char[]?
我需要一個char []數組並將它的值復制到另一個,但我每次都失敗了。
它使用以下格式:
char array[] = { 0x00, 0x00, 0x00 }
但是,當我嘗試這樣做時:
char array[] = char new_array[];
即使new_array和原版一樣,它也會失敗。
任何幫助將不勝感激。
謝謝
要在運行時復制,通常的C方法是使用strncpy
或memcpy
函數。
如果你想在編譯時將兩個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.