Objective c C语法'Type varname[integer];`与+一起使用时执行此操作;操作人员

Objective c C语法'Type varname[integer];`与+一起使用时执行此操作;操作人员,objective-c,c,types,Objective C,C,Types,我仔细看了一下,我看到了: memcpy(seq + bufLen, pre, preLen); 字节顺序[termLength]; (termLength是一个NSUInteger,在我的环境中是一个无符号长;Byte是一个UInt8,它是一个无符号字符) 我不太熟悉Objective-C的C部分。。。这有什么用?在我看来,它似乎创建了一个名为seq的Bytes的新数组,即termLengthlong,而不初始化其中的内存,但后来我看到了这一点: memcpy(seq + bufLen,

我仔细看了一下,我看到了:

memcpy(seq + bufLen, pre, preLen);
字节顺序[termLength];
termLength
是一个
NSUInteger
,在我的环境中是一个
无符号长
Byte
是一个
UInt8
,它是一个
无符号字符

我不太熟悉Objective-C的C部分。。。这有什么用?在我看来,它似乎创建了一个名为
seq
Byte
s的新数组,即
termLength
long,而不初始化其中的内存,但后来我看到了这一点:

memcpy(seq + bufLen, pre, preLen);

我对这部分很困惑
bufLen
是一个
NSU整数
。如何将
整数
添加到
字节[]
?这会有什么作用呢?

您所描述的是一个C数组。您可以在此处阅读有关C阵列的内容:


C数组可以像指针一样使用,包括指针算法。因此,如果您将
bufLen
添加到
seq
,那么最终得到的是一个指向
bufLen
字节位置的指针,指向
seq
。所以
(seq+buflen)[0]
得到与
seq[buflen]
相同的字节,
(seq+buflen)[1]
得到
seq[buflen+1]
,等等。希望
buflen
小于
term length
,好的,那么,问题的后半部分:<代码> SEQ+BuffEn/Cuth>意味着什么?@ BenLeggiero,这是一个新的指针,它从数组的中间开始。由于指针和数组在C语言中具有相似的语法,您确实可以将其视为数组的子片段。@BenLeggiero Close。这与
memcpy(&seq[bufLen],pre,preLen)
的行为相同。只要
seq[bufLen]
就可以得到字符本身,而不是指向它的指针。你需要一个指针(或者一个数组,它被编译器魔法变成指针),因为
memcpy
的第一个参数就是这样的。@BenLeggiero过了一会儿你就明白了。一旦你这样做了,当你用现代语言写的时候,你就会开始丢失显式的指针语法。例如假设您有一个数组。然后创建一个新的数组变量并将第一个数组分配给它。然后修改第二个数组。第一个数组也会被修改吗?答:取决于语言。斯威夫特:不是。基本上,您必须跟踪每种语言的每种类型是值类型还是引用类型,才能知道会发生什么。在C语言中,你只要看看是否有一个
*
,你就知道了。该死的孩子们!离开我的草坪。