声明函数,参数写的int*arr,在调用函数时,参数写的int arr,为何不是int arr[10]
#include<iostream>using namespace std;
void bubblesort(int*arr,int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(arr>arr)
{
int temp=arr;
arr=arr;
arr=temp;
}
}
}
}
void shuchu(int*arr,int len)
{
for(int i=0;i<len-1;i++)
{
cout<<arr<<endl;
}
}
int main()
{
int arr={81, 1 ,83, 5, 65, 90, 12, 29, 75, 88};
int len=sizeof(arr)/sizeof(arr);
bubblesort(arr,len);
shuchu(arr,len);
return 0;
} 在声明函数时,参数写成int* arr 表示传入的参数是一个指向整型数组的指针。这意味着可以传入任意长度的整型数组。
在调用函数时,参数写成int arr 是一种简写形式,它实际上是将数组名作为指针传递给函数。在函数内部,可以通过指针访问数组的元素。
而写成int arr 是对数组的长度进行了限定,表示传入的数组长度为10。这种写法在函数内部并不会起到实际的限制作用,因为数组名在传递给函数时会自动转换为指针。
在你的代码中,调用函数shuchu时应该传入的是数组名,而不是数组的一个元素。所以应该修改为shuchu(arr, len)。 在声明函数时,参数列表中的 int* arr 表示一个指向整型数组的指针。这个函数可以处理任何指向整型数组的指针,不论这个数组是如何命名的。
在调用函数时,需要传递一个指向整型数组的指针作为参数,而不是直接传递一个整型数组。如果你的参数是 int ...,则表示可以接受任意数量的整型参数,但这不符合你定义的函数参数类型。
修改后的代码如下:
#include<iostream>
using namespace std;
void bubblesort(int* arr, int len)
{
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(arr>arr)
{
int temp = arr;
arr = arr;
arr = temp;
}
}
}
}
void shuchu(int* arr, int len)
{
for(int i=0;i<len;i++)
{
cout << arr << endl;
}
}
int main()
{
int arr = {81, 1, 83, 5, 65, 90, 12, 29, 75, 88};
int len = sizeof(arr)/sizeof(arr);
bubblesort(arr, len);
shuchu(arr, len);
return 0;
}
在上述代码中,我修改了 shuchu() 函数的参数和调用方式,使其正确地传递整型数组的指针作为参数。同时,我还在 shuchu() 函数中修改了循环的上限,确保将所有元素输出。
希望这个解答能够帮到你。如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} 在函数声明和定义中,参数的类型为"int* arr",这表示参数是一个指向整数数组的指针。当你调用该函数时,传递的参数可以是一个指向整数数组的指针,如"int arr[]",或者只是一个指向第一个元素的指针,如"int* arr"。
在函数调用中,你传递的参数应该是"arr"而不是"arr"。"arr"是数组中的第11个元素,而不是指向整数数组的指针。改为使用"arr"作为参数传递给"shuchu"函数即可。
请注意,本回答来自GPT-3.5
如果问题已经解决,请设置最佳答案
页:
[1]