【问题标题】:Can't pass full array value to another function in C++无法将完整的数组值传递给 C++ 中的另一个函数
【发布时间】:2021-04-24 07:07:48
【问题描述】:

我是 C++ 新手,不太了解基础知识。请帮助(抱歉,如果解决方案已经可用,但我找不到任何解决方案)

这是我得到的错误:

“]”标记之前的预期主表达式 字符 CusName[50]=x[]; ^

下面这段代码:

#include <iostream>
using namespace std;

class BankAccount
{
    private:
    
    char CusName[50];
    char CusId[10];
    float accBalance, dep, witd;
    
    public:
    
    void setCusDetails(char x[], char n)
    {
        char CusName[50]=x[];
    }
};


int main()
{
    BankAccount customer1;

char cus1Name[50];
cin>>cus1Name;

customer1.setCusDetails(cus1Name, 50); 

    return 0;
}

【问题讨论】:

标签: c++


【解决方案1】:

您的 char 数组看起来像一个字符串。尝试改用 std::string 并更喜欢对函数参数使用 const 引用。 如果您想使用 char 数组,并且您的目的是按值复制以 null 结尾的字符串,则使用 strncpy 之类的函数。 使用 std::string 可能更容易让你隐藏内存分配的负担,一步一步发现语言。

【讨论】:

    【解决方案2】:

    您可以改用string 来输入和传递值。

    #include <iostream>
    using namespace std;
    
    class BankAccount
    {
        private:
        
        string CusName; //CusName of type string
        char CusId[10];
        float accBalance, dep, witd;
        
        public:
        
        void setCusDetails(string str, char n) //parameter str of type string
        {
            CusName=str; //Assign it to the already declared 'CusName' variable.
        }
    };
    
    
    int main()
    {
        BankAccount customer1;
    
    string cus1Name;
    cin>>cus1Name;
    
    customer1.setCusDetails(cus1Name, 50); 
    
        return 0;
    }
    

    【讨论】:

    • 恐怕它根本不会复制字符串,我猜这是预期的结果。顺便说一句,这里有缓冲区溢出。
    • 您好,我已经对代码进行了更改,请检查。如前所述,最好使用string 数据类型,它虽然不是原始的,但仍然可以执行大部分需要的操作。
    • 这样更好:没有更多的缓冲区溢出并且字符串值被复制。一个 const ref 字符串参数将是一个加号,但它可以按原样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2020-11-01
    • 2020-02-19
    相关资源
    最近更新 更多