c++冒泡排序中向函数传入数组报错

如题,*处会报错,换成取址符也会报同样的错误,

img


以及显示函数未定义的问题。

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7729745
  • 这篇博客你也可以参考下:C++中的结构体指针作为函数参数,不会修改实参的值的问题。
  • 除此之外, 这篇博客: C++函数参数的传递中的 2)如果我们不要指针那还会不会实现上面的交换功能呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 代码如下(示例):

    #include<iostream>
    using namespace std;
    void swap(int x,int y)
    {
    	int temp;
    	temp=x;
    	x=y;
    	y=temp;
    }
    int main()
    {
    	int a=3,b=8;
    	cout<<"before swaping.....\n";
    	cout<<"a="<<a<<",b="<<b<<endl;
    	swap(a,b);
    	cout<<"after swaping.....\n";
    	cout<<"a="<<a<<",b="<<b<<endl;
    }
    

    在这里插入图片描述

  • 您还可以看一下 王健伟老师的C++语言基础到进阶课程中的 类型转换构造函数、运算符,类成员指针小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    对于传递数组的问题,可以考虑在函数中使用指针作为形参,通过指针来操作数组。具体步骤如下:

    1.函数原型中定义一个指针类型的形参,用于接收数组的地址,例如:

    void bubbleSort(int* arr, int size);
    

    2.在函数内部使用指针来操作数组元素,例如使用*arr表示数组第一个元素的值:

    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (*(arr + j) > *(arr + j + 1)) {
                int temp = *(arr + j);
                *(arr + j) = *(arr + j + 1);
                *(arr + j + 1) = temp;
            }
        }
    }
    

    3.在主函数中进行调用时,传递数组名即可,不需要再取地址或使用指针符号:

    int arr[] = {5, 3, 2, 8, 1};
    int size = sizeof(arr) / sizeof(arr[0]);
    bubbleSort(arr, size);
    

    通过这种方法,可以正确地传递数组并使用指针操作数组元素,避免了因为数组和指针的传递混淆导致的错误。

调用的时候应该直接写数组名字即可,
还有你 这个函数最后是不是多了个分号啊


void bubblesort()
{
    .........
};  这里应该不要分号吧

重建项目解决了……