王鹿其 发表于 2023-10-23 20:21:55

声明函数,参数写的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;

}

isdkz 发表于 2023-10-23 20:22:43

在声明函数时,参数写成int* arr 表示传入的参数是一个指向整型数组的指针。这意味着可以传入任意长度的整型数组。

在调用函数时,参数写成int arr 是一种简写形式,它实际上是将数组名作为指针传递给函数。在函数内部,可以通过指针访问数组的元素。

而写成int arr 是对数组的长度进行了限定,表示传入的数组长度为10。这种写法在函数内部并不会起到实际的限制作用,因为数组名在传递给函数时会自动转换为指针。

在你的代码中,调用函数shuchu时应该传入的是数组名,而不是数组的一个元素。所以应该修改为shuchu(arr, len)。

Mike_python小 发表于 2023-10-23 20:23:26

在声明函数时,参数列表中的 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:}

陶远航 发表于 2023-10-23 20:24:50

在函数声明和定义中,参数的类型为"int* arr",这表示参数是一个指向整数数组的指针。当你调用该函数时,传递的参数可以是一个指向整数数组的指针,如"int arr[]",或者只是一个指向第一个元素的指针,如"int* arr"。

在函数调用中,你传递的参数应该是"arr"而不是"arr"。"arr"是数组中的第11个元素,而不是指向整数数组的指针。改为使用"arr"作为参数传递给"shuchu"函数即可。
请注意,本回答来自GPT-3.5
如果问题已经解决,请设置最佳答案
页: [1]
查看完整版本: 声明函数,参数写的int*arr,在调用函数时,参数写的int arr,为何不是int arr[10]