假设我得到一个数组
unsigned char digit[] = {0, 1, 2, 3, 4, 5, 6, 7};然而,我想修改数组的一部分,使数组变成如下所示:
{0, 1, 2, 3, 0, 0, 0, 0}枚举我想要修改的每个元素,并修改它们可能需要一些努力。尤其是当有大量元素需要更改时。我知道在像Python这样的一些语言中,我可以用一行代码来做一些事情:
a = np.array([0, 1, 2, 3, 4, 5, 6, 7])
a[4:] = [0, 0, 0, 0]
//a: array([0, 1, 2, 3, 0, 0, 0, 0])所以我想知道,在C中有没有类似的方法呢?
发布于 2018-01-08 11:15:56
发布于 2018-01-08 11:20:19
一种选择是,您可以编写一个子例程来实现其他语言“在幕后”提供的接口。您可能希望自己学习“VARARGS”,使其接受可变数量的参数。
发布于 2018-01-08 11:38:26
其他人已经提到使用memset将数组元素设置为单个值,作为后续问题的一部分,您询问是否可以将某些元素设置为某些值,如{1, 2, 3, 4}。
您可以在这里使用memcpy来实现这一点。因为你的类型在这里是unsigned char,所以我将保留它,但是一般来说,这个方法可以用于任何类型。
memcpy(&digit[4], ((unsigned char[4]){1, 2, 3, 4}), 4 * sizeof(unsigned char));您可以查看演示here。
https://stackoverflow.com/questions/48143776
复制相似问题