关于#c++#的问题,请各位专家解答!

各位能帮我看看这个代码有什么问题吗,题目是让你输入若干个数字,然后输出里面最大的一个数字

img

img

img

arr都没有分配空间啊
27行也是错的,不能在函数中对参数指针进行这样的数组长度计算,结果不是数组长度

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7713736
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++语言编写程序,输入一个含有数字的字符串,找出其中的所有整数(不考虑正负),排序后以规定运算方式输出
  • 除此之外, 这篇博客: 一文看懂C++类的拷贝构造函数所有用法(超详细!!!)中的 一. 什么是拷贝构造函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 转自百度定义:拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其形参必须是引用,但并不限制为const,一般普遍的会加上const限制。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。

    对于普通类型的对象来说,它们之间的复制是很简单的,例如:

    int a = 100;
    int b = a; 
    

    而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。
    下面看一个类对象拷贝的简单例子。

    #include<iostream>
    using namespace std;
    class CExample
    {
    private:
        int a;
    public:
        //构造函数
        CExample(int b)
        {
            a=b;
            printf("constructor is called\n");
        }
        //拷贝构造函数
        CExample(const CExample & c)
        {
            a=c.a;
            printf("copy constructor is called\n");
        }
        //析构函数
        ~CExample()
        {
            cout<<"destructor is called\n";
        }
        void Show()
        {
            cout<<a<<endl;
        }
    };
    int main()
    {
        CExample A(100);
        CExample B=A;
        B.Show(); 
        return 0;
    }
    

    程序运行结果如下:

    constructor is called
    copy constructor is called
    100
    destructor is called
    destructor is called
    

    运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象 B 分配了内存并完成了与对象 A 的复制过程。就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。

    CExample(const CExample& C) 就是我们自定义的拷贝构造函数。可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。

  • 您还可以看一下 王桂林老师的<3>华为工程师 ,带你实战C++(2018版)课程中的 02拷贝构造器(深拷贝与浅拷贝)小节, 巩固相关知识点