为什么显示爆红了呢?

问题描述:

代码如下:

// Created by 黑马程序员.
#include "iostream"
using namespace std;
#include <random>
int main()
{




    int get_random_num(min,max)
    {
        random_device rd;
        mt19937 gen(rd());
        uniform_int_distribution<> dis(min,max);
        return dis(gen);
    }
    
    struct Student
    {
        string name;
        int age = 11;
        string gender = "男";
    };
    struct Student arr1[3] = {{"周杰轮"}, {"林军杰"}, "王力鸿"};
    struct Student * p1 = arr1;     // 数组的对象本质上就是地址(指向数组的第一个元素的位置)
    cout << "数组的第一个元素中记录的name是:" << p1[0].name << endl;
    cout << "数组的第二个元素中记录的name是:" << p1[1].name << endl;
    cout << "数组的第三个元素中记录的name是:" << p1[2].name << endl;

    // 通过new操作符,自行申请结构体数组的空间(可以通过delete回收)
    struct Student * p2 =
            new Student[3] {{"周杰轮"}, {"林军杰"}, {"王力鸿"}};

    cout << "数组2的第一个元素中记录的name是:" << p2[0].name << endl;
    cout << "数组2的第二个元素中记录的name是:" << p2[1].name << endl;
    cout << "数组2的第三个元素中记录的name是:" << p2[2].name << endl;

    delete[] p2;




   return 0;
}
定义函数    int get_random_num(min,max)
    {
        random_device rd;
        mt19937 gen(rd());
        uniform_int_distribution<> dis(min,max);
        return dis(gen);
    }

为什么爆红了呢?

问题解答:

在你提供的代码中,get_random_num 函数的定义有两个问题:

  1. 函数参数的类型没有指定:在 C++ 中,函数定义时必须为所有参数指定类型。你在 get_random_num(min, max) 中没有为 minmax 参数指定类型,这会导致编译错误。

  2. 函数的定义位置:你将 get_random_num 函数的定义放在 main 函数内部。C++ 不支持在一个函数内部定义另一个函数(即不支持嵌套函数)。函数定义应该放在 main 函数的外面。

下面是修正后的代码:

#include "iostream"
#include <random>
using namespace std;

// 正确的函数定义,参数需要指定类型
int get_random_num(int min, int max) {
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> dis(min, max);
    return dis(gen);
}

int main() {
    struct Student {
        string name;
        int age = 11;
        string gender = "男";
    };

    struct Student arr1[3] = {{"周杰轮"}, {"林军杰"}, "王力鸿"};
    struct Student *p1 = arr1; // 数组的对象本质上就是地址(指向数组的第一个元素的位置)
    cout << "数组的第一个元素中记录的name是:" << p1[0].name << endl;
    cout << "数组的第二个元素中记录的name是:" << p1[1].name << endl;
    cout << "数组的第三个元素中记录的name是:" << p1[2].name << endl;

    // 通过new操作符,自行申请结构体数组的空间(可以通过delete回收)
    struct Student *p2 = new Student[3] {{"周杰轮"}, {"林军杰"}, {"王力鸿"}};

    cout << "数组2的第一个元素中记录的name是:" << p2[0].name << endl;
    cout << "数组2的第二个元素中记录的name是:" << p2[1].name << endl;
    cout << "数组2的第三个元素中记录的name是:" << p2[2].name << endl;

    delete[] p2;

    return 0;
}

关键修正点:

  • 函数参数类型声明int get_random_num(int min, int max) 中,minmax 参数的类型声明为 int
  • 函数定义位置:将 get_random_num 函数定义放在 main 函数外部。

这些修改之后,代码应该可以正常编译并运行。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神笔馬良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值