【问题标题】:Struct C++ array in function parameters not working at all函数参数中的结构 C++ 数组根本不起作用
【发布时间】:2024-01-10 17:55:01
【问题描述】:

你好,我必须使用结构数组来做一个程序。我必须在一个函数中初始化它。下面我正在尝试,但我的原型不断收到错误“预期的主要表达式”..我已经按照教程进行操作,但无法弄清楚我做错了什么,请帮忙。我不能使用指针或向量.. 只是基本的东西谢谢你的时间

struct gameCases{

bool flag = false;
int casenum;
double value;
};
 int initialize(gameCases cases);  //prototype

--- main()

gameCases cases[26];
initialize(cases);    //call

int initialize(gameCases cases)  //definition
{
double values[26] = {.01, 1, 5, 10, 25, 50,
                75, 100, 200, 300, 400, 500, 750, 1000,
                5000, 10000 , 25000, 50000, 75000, 100000,
                200000 , 300000, 400000, 500000,
                1000000, 2000000};

for (int i = 0; i < 26; i++)
{
    array[i].value = values[i];
}
}

【问题讨论】:

    标签: c++ arrays function struct structure


    【解决方案1】:

    像这样声明函数

    int initialize( gameCases *array, size_t n );  
    

    然后这样称呼它

    initialize( cases, 26 );    
    

    或者你可以通过引用传递数组。例如

    int initialize( gameCases ( &cases )[26] );
    

    考虑到该函数被声明为具有返回类型 int 但它实际上什么也不返回。

    【讨论】:

    • 谢谢你,但帖子没有说明。弗拉德,你能想出一个不用指针的方法吗?
    • @user3349184 尽管您说不应使用指针,但您将函数参数为指针的帖子标记为最佳。:) 此声明 gameCases case[26] 等效于 gameCases *cases唯一正确的解决方案是使用我展示的参考。
    【解决方案2】:
    int initialize(gameCases cases[26]);  //prototype
    
    int initialize(gameCases cases[26])  //definition
    {
        double values[26] = {.01, 1, 5, 10, 25, 50,
                75, 100, 200, 300, 400, 500, 750, 1000,
                5000, 10000 , 25000, 50000, 75000, 100000,
                200000 , 300000, 400000, 500000,
                1000000, 2000000};
    
        for (int i = 0; i < 26; i++)
        {
            cases[i].value = values[i];
        }
    }
    

    并调用:

    initialize(cases); 
    

    【讨论】:

    • 是调用...初始化(cases[])??
    • 更新了我的帖子。但实际上,莫斯科的弗拉德给出的第一个解决方案是更好的解决方案。
    • 在你的情况下有你的限制是的,在现实生活中没有