鱼C论坛

 找回密码
 立即注册
查看: 771|回复: 3

[已解决]声明函数,参数写的int*arr,在调用函数时,参数写的int arr,为何不是int arr[10]

[复制链接]
发表于 2023-10-23 20:21:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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[j]>arr[j+1])
                        {
                                int temp=arr[j];
                                arr[j]=arr[j+1];
                                arr[j+1]=temp;
                        }
                }
        }
}
void shuchu(int*arr,int len)
{
        for(int i=0;i<len-1;i++)
        {
                cout<<arr[i]<<endl;
        }
}
int main()
{
        int arr[10]={81  , 1 ,  83,   5,   65,   90,   12,   29,   75,   88};
        int len=sizeof(arr)/sizeof(arr[0]);
        bubblesort(arr,len);
        shuchu(arr[10],len);
        return 0;

}
最佳答案
2023-10-23 20:22:43
在声明函数时,参数写成int* arr 表示传入的参数是一个指向整型数组的指针。这意味着可以传入任意长度的整型数组。

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

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

在你的代码中,调用函数shuchu时应该传入的是数组名,而不是数组的一个元素。所以应该修改为shuchu(arr, len)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-23 20:22:43 | 显示全部楼层    本楼为最佳答案   
在声明函数时,参数写成int* arr 表示传入的参数是一个指向整型数组的指针。这意味着可以传入任意长度的整型数组。

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

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

在你的代码中,调用函数shuchu时应该传入的是数组名,而不是数组的一个元素。所以应该修改为shuchu(arr, len)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 20:23:26 | 显示全部楼层
在声明函数时,参数列表中的 int* arr 表示一个指向整型数组的指针。这个函数可以处理任何指向整型数组的指针,不论这个数组是如何命名的。

在调用函数时,需要传递一个指向整型数组的指针作为参数,而不是直接传递一个整型数组。如果你的参数是 int ...,则表示可以接受任意数量的整型参数,但这不符合你定义的函数参数类型。

修改后的代码如下:
  1. #include<iostream>
  2. using namespace std;
  3. void bubblesort(int* arr, int len)
  4. {
  5.     for(int i=0;i<len-1;i++)
  6.     {
  7.         for(int j=0;j<len-1-i;j++)
  8.         {
  9.             if(arr[j]>arr[j+1])
  10.             {
  11.                 int temp = arr[j];
  12.                 arr[j] = arr[j+1];
  13.                 arr[j+1] = temp;
  14.             }
  15.         }
  16.     }
  17. }
  18. void shuchu(int* arr, int len)
  19. {
  20.     for(int i=0;i<len;i++)
  21.     {
  22.         cout << arr[i] << endl;
  23.     }
  24. }
  25. int main()
  26. {
  27.     int arr[10] = {81, 1, 83, 5, 65, 90, 12, 29, 75, 88};
  28.     int len = sizeof(arr)/sizeof(arr[0]);
  29.     bubblesort(arr, len);
  30.     shuchu(arr, len);
  31.     return 0;
  32. }
复制代码

在上述代码中,我修改了 shuchu() 函数的参数和调用方式,使其正确地传递整型数组的指针作为参数。同时,我还在 shuchu() 函数中修改了循环的上限,确保将所有元素输出。

希望这个解答能够帮到你。如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 20:24:50 | 显示全部楼层
在函数声明和定义中,参数的类型为"int* arr",这表示参数是一个指向整数数组的指针。当你调用该函数时,传递的参数可以是一个指向整数数组的指针,如"int arr[]",或者只是一个指向第一个元素的指针,如"int* arr"。

在函数调用中,你传递的参数应该是"arr"而不是"arr[10]"。"arr[10]"是数组中的第11个元素,而不是指向整数数组的指针。改为使用"arr"作为参数传递给"shuchu"函数即可。
请注意,本回答来自GPT-3.5
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 13:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表