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

时间:2012-06-03 01:28:05

标签: objective-c arrays initialization char

我需要一个char []数组并将它的值复制到另一个,但我每次都失败。

它使用以下格式:

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

然而,当我尝试这样做时:

char array[] = char new_array[];

它失败了,即使new_array和原版一样。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:4)

要在运行时复制,通常的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

但是,我仍然不确定你想要什么。