#include <iostream>
using namespace std;
int main(){
int findMax(int *);
const int MAX = 100;
int values[MAX];
char ivals[256];
// Get the space-separated values from user input.
cin.getline(ivals, 256, '0');
char *helper;
// Clean input array and transfer it to values.
for(int i = 0; i < (MAX) && ivals[i] != 0; i++){
helper = ivals[i * 2];
values[i] = atoi(helper);
}
int mval = findMax(values);
cout << values << endl << mval;
return 0;
}
//Function to find the maximum value in the array
int findMax(int arr[]){
int localmax = 0;
for(int i = 0; i < (sizeof(arr)/sizeof(int)); i++){
if(arr[i] > localmax){
localmax = arr[i];
}
}
return localmax;
}
該程序的目的是爲用戶輸入一個由0結尾的以空格分隔的值序列。然後要分析該數組以查找最大值。我想出如何轉換的是原本一個char []爲一個int [],這樣我可以使用findMax()函數就可以了,而不錯誤,但排序循環似乎有它自己的問題,當「COUT < <值< < endl < < mval;「被調用時,它只返回一個內存地址,而不是應該是非間隔的整數序列。任何人都可以解釋我做錯了什麼嗎?看來我可能使用指針犯了一些錯誤,但我無法弄清楚什麼。C++程序顯然是打印內存地址而不是陣列
相關:http://stackoverflow.com/questions/2037736/finding-size-of-int-array/和http://stackoverflow.com/questions/1975128/sizeof-an-array-in -aa -c-programming-language/ – 2010-09-09 16:59:44
@aaa鯉魚:再一次:一個數組不是一個指針,它具有不同的類型,大小......語言執行從數組到數組中的第一個元素的自動轉換數組,但就是這樣。說一個數組是一個指針就像是說int是一個double,只是因爲int i = 10; double d = i;'編譯。 – 2010-09-10 09:01:22