我正在尝试对C中的数组值应用算术运算。例如,如果我想为数组的每个值添加数字x,我应该将它分别添加到每个值,或者我可以改为将x添加到整个数组中(因此它会自动将其添加到数组的每个值中)。
答案 0 :(得分:3)
如果我想为数组的每个值添加一个数字x,我应该将它单独添加到每个值
是的,你需要循环完成。 C不提供操作员一次操作整个数组。
我可以将x添加到整个数组
一个表达式,类似于向数组中添加int
,例如array+x
,将编译,但它完全是一个不同的操作:当在算术运算中使用数组名时,它被视为指向数组的初始元素的指针,因此{{1的结果表达式与array+x
(指向&array[x]
的{{1}}元素的指针)相同。
将array
应用于数组将无法编译。
答案 1 :(得分:3)
创建一个循环遍历数组的函数,并将您的操作手动应用于数组中包含的每个值。没有“buildin”功能可以在C
中为您完成答案 2 :(得分:1)
你必须像使用各种语言一样遍历整个数组。
答案 3 :(得分:1)
这是一个处理它的简单函数:
void Add(int* toIncrement, int size, int increaseBy){
for(int i = 0; i < size; ++i){
toIncrement[i] += increasedBy;
}
}
你可以像这样使用它:
int thirteens[10] = {0};
Add(thirteens, 10, 13);
请注意,如果您想在本地编写Add
,可以这样做并避免抛出一堆变量。
此外,如果您想要乘法或其他内容,只需复制该函数,更改函数名称并在*=
的位置使用+=
。
对数组中每个元素的任何修改都是以这种方式在C中完成的。
答案 4 :(得分:1)
这里有一个简单的例子,可以帮助理解数组操作的概念 / * 数组上的基本数学 * /
void setup()
{
Serial.begin(9600);
int vector[] = {2, 4, 8, 3, 6};
int i;
for (i = 0; i < 5; i = i + 1)
{
vector[i] = vector[i]*3;
Serial.println(vector[i]);
}
}
void loop()
{
}