2014-11-21 134 views
2

我想對C中數組的值應用算術運算。例如,如果我想爲數組的每個值添加一個數字x,我應該將它分別添加到每個數組中值,或者,而不是我可以將x添加到整個數組(所以它會自動將它添加到數組的每個值)。對數組中的算術運算C

+4

試試吧。如果有任何問題,請帶上。 – 2014-11-21 13:41:29

+0

您必須爲每個元素添加數字x。 – bitcell 2014-11-21 13:42:05

回答

3

,如果我想添加一個數字x到陣列中的每個值,我應該單獨把它添加到每個值

是的,你需要做的是在一個循環。 C不提供一次操作整個數組的操作符。

可以予添加x到整個陣列

,看起來像添加到int陣列的表達,例如array+x會編譯,但它是完全不同的操作:當在算術運算中使用數組名稱時,它被看作是指向數組的初始元素的指針,所以array+x表達式的結果與&array[x] (指向指數爲xarray的元素的指針)。對數組應用+=不會編譯。

+1

「向數組中添加一個int將被編譯,但它完全是一個不同的操作。」什麼? – 2014-11-21 13:43:02

+0

Switch正在詢問'+ =','+'與現在的問題不符。 – Deduplicator 2014-11-21 13:44:49

+0

@JensGustedt我的編輯解釋了我的意思嗎? – dasblinkenlight 2014-11-21 13:53:25

1

你必須像在每種語言中一樣運行整個陣列。

+3

有些語言確實支持這一點。 Matlab例如。 – Martze 2014-11-21 13:45:20

+1

是的,在很多語言中,你有一個地圖功能或類似的東西,但木材下面發生的事情是通過整個陣列的循環。 – soueuls 2014-11-21 13:46:28

+0

那麼,黑盒子包含魔法,但它的工作原理。 (細節不感興趣。) – Deduplicator 2014-11-21 13:50:43

3

使函數循環遍歷數組,並將您的操作應用於數組中包含的每個值。有沒有「的buildin」功能,會替你用C

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.這樣

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() 
{ 
}