首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C中一次修改多个元素?

如何在C中一次修改多个元素?
EN

Stack Overflow用户
提问于 2018-01-08 11:08:24
回答 4查看 692关注 0票数 4

假设我得到一个数组

代码语言:javascript
复制
unsigned char digit[] = {0, 1, 2, 3, 4, 5, 6, 7};

然而,我想修改数组的一部分,使数组变成如下所示:

代码语言:javascript
复制
{0, 1, 2, 3, 0, 0, 0, 0}

枚举我想要修改的每个元素,并修改它们可能需要一些努力。尤其是当有大量元素需要更改时。我知道在像Python这样的一些语言中,我可以用一行代码来做一些事情:

代码语言:javascript
复制
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中有没有类似的方法呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-08 11:15:56

C中的可能性较少,但如果使用unsigned char并将其值设置为零,则可以使用memset

代码语言:javascript
复制
memset(&digit[4], 0, 4);

Demo.

票数 3
EN

Stack Overflow用户

发布于 2018-01-08 11:20:19

一种选择是,您可以编写一个子例程来实现其他语言“在幕后”提供的接口。您可能希望自己学习“VARARGS”,使其接受可变数量的参数。

票数 3
EN

Stack Overflow用户

发布于 2018-01-08 11:38:26

其他人已经提到使用memset将数组元素设置为单个值,作为后续问题的一部分,您询问是否可以将某些元素设置为某些值,如{1, 2, 3, 4}

您可以在这里使用memcpy来实现这一点。因为你的类型在这里是unsigned char,所以我将保留它,但是一般来说,这个方法可以用于任何类型。

代码语言:javascript
复制
memcpy(&digit[4], ((unsigned char[4]){1, 2, 3, 4}), 4 * sizeof(unsigned char));

您可以查看演示here

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48143776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档