#include <stdio.h>
int sumofArrayNum(int numList[]);
int main(){
int result,numList[]={23,32,54,23,54,32,3,35};
result = sumofArrayNum(numList);
printf("sum= %d", result);
return 0;
}
int sumofArrayNum(int numList[]){
int sum = 0;
for(int i = 0; i < 10; i){
sum = numList[i];
}
return sum;
}
每次構建和運行它時,輸出都不同。例如輸出是 sum = 1032918821
我想要的預期輸出是 sum = 256
uj5u.com熱心網友回復:
引數 likeint numList[]與 相同int* numList,如果沒有明確定義,編譯器將不知道它的元素數。順便說一下,int numList[8]也是一樣的int* numList。C語言并沒有檢查陣列的范圍內。
有一些方法可以獲取和檢查陣列大小。
- 大小/計數引數
int sumofArrayNum(int numList[], int listSize){
int sum = 0;
for(int i = 0; i < listSize; i){
sum = numList[i];
}
return sum;
}
這里listSize應該是元素的數量。
您可以使用宏來隱藏計數引數:
#define sumofArray(array) sumofArrayNum((array), sizeof(array)/sizeof(*array))
- 指向整個陣列
int sumofArrayNum(int (*numList)[8]){
int sum = 0;
for(int i = 0; i < sizeof(*numList)/sizeof(**numList); i){
sum = (*numList)[i];
}
return sum;
}
通過發送陣列指標呼叫它:
result = sumofArrayNum(&numList);
編譯器(例如 gcc)可以對此進行弱檢查:如果您發送的陣列不是int (*)[8].
請注意,您必須確保陣列的有效性,并且陣列大小必須是恒定的。
除了,
每次構建和運行它時,輸出都不同。
因為只定義了 8 個元素,索引范圍是0?7。numList[8]并且numList[9]是未定義的,意味著任何值都是可能的。可能使用過,被其他行程更改過,隨機且危險。
uj5u.com熱心網友回復:
在numlist還有一些用于回圈必須執行代碼8次8元件。您的代碼必須是:
for(int i = 0; i < 8; i)
{
sum = numList[i];
}
此代碼迭代,直到i=7,當i=8它結束回圈。
資訊 for loop
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365873.html
上一篇:PHP:有沒有辦法禁止在某些類中使用全域/系統函式?
下一篇:取決于R中匹配的函式的默認引數
