#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