题目是(输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。编写3函数:1.输入10个数;2.进行处理;3.输出10个数)要求用指针解决
我知道思路并不复杂,只要定义一个数组,再定义一个指针数组指向该数组的各个元素,最后将地址交换即可。
我的问题就在于怎么让指针和数组同时出现在函数的一个括号中,例如可不可以int chuli(int array【】,int n,int p【】,int n)
我试了一下,会报错
我认为的困难之处就在于输出10个数要用到指针,输入10个数不用指针,进行处理也要用到指针,那么怎么将array【】和p【】同时放到函数的括号中去???
大神求解!!!!
不好意思这里面的int p【】的星星号*在显示的时候没有显示出来
只需要1个指针就行了
我随便写了个,写得不好,将就着看
1 #include <iostream> 2 using namespace std; 3 4 //输入 5 void inputNums(int *pInput) 6 { 7 cout << "请输入10个数字" << endl; 8 for (int i = 0; i < 10; i++) 9 { 10 int iNum; 11 cin >> iNum; 12 *(pInput + i) = iNum; 13 } 14 } 15 16 //处理 17 void dealFunc(int *pInput) 18 { 19 int iMinIndex = 0; 20 int iMaxIndex = 0; 21 for (int i = 1; i < 10; i++) 22 { 23 if (*(pInput + i) > *(pInput + iMaxIndex)) 24 { 25 iMaxIndex = i; 26 } 27 if (*(pInput + i) < *(pInput + iMinIndex)) 28 { 29 iMinIndex = i; 30 } 31 } 32 int iTemp; 33 iTemp = *(pInput + iMinIndex); 34 *(pInput + iMinIndex) = *pInput; 35 *pInput = iTemp; 36 37 iTemp = *(pInput + iMaxIndex); 38 *(pInput + iMaxIndex) = *(pInput + 9); 39 *(pInput + 9) = iTemp; 40 } 41 42 //输出 43 void outputNums(int *pInput) 44 { 45 for (int i = 0; i < 10; i++) 46 { 47 cout << *(pInput + i) << " "; 48 } 49 cout << endl; 50 } 51 52 int main() 53 { 54 int a[10]; 55 inputNums(a); 56 dealFunc(a); 57 outputNums(a); 58 system("pause"); 59 return 0; 60 }
赞同这个答案
method(int arr[],int *p)
可以这样写会报错吗?你把代码贴上来,说不定是传递的参数不对。
数组和指针可以互换的么,你把数组写成指针的形式试试看。