【问题标题】:Method to set a char array equal to each other wont work将字符数组设置为彼此相等的方法不起作用
【发布时间】:2019-09-17 03:41:01
【问题描述】:

对于我的家庭作业,我需要使用指针在 C++ 中导航数组。我编写的将私有对象成员变量char m_make[] 设置为等于传递的char[] 的set 函数无法正常运行。当我尝试运行我的程序时,它似乎在我调用 setMake() 函数后终止。我做错了什么?

函数声明:(包含在一个名为RentalCar的对象中)
void setMake(char make[5]);

这是setMake()的代码:

void RentalCar::setMake(char make[5]){
    for(int i = 0; (make+i) != '\0';i++){
        *(m_make+i) = *(make+i);
    }
}

当我调用setMake() 时,无论我传递什么函数,输出都是Process returned 后跟一个非常大的数字。

【问题讨论】:

    标签: c++ arrays pointers char


    【解决方案1】:

    在您的 for 循环中,您正在检查 (make+i) != '\0',它基本上每次迭代时都会将 i 添加到 makemake 是数组第一个字符的内存地址

    话虽如此,(make+i) 永远不会是== '\0',因为(make+i) 是一个内存地址,而您的程序可以访问的地址永远不会为 NULL,这意味着它是一个无限循环。

    您需要使用指针符号来实际取消引用您的(make+i),以便它检查内存(make+i) 内的值,而不是地址本身。意味着,你必须这样做:

    *(make + i) != '\0'

    获取值并比较它,就像你正在做的那样设置值:

    *(m_make+i) = *(make+i);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 2013-04-23
      • 2014-05-09
      相关资源
      最近更新 更多