将字符数组设置为彼此相等的方法不起作用

Method to set a char array equal to each other wont work

本文关键字:方法 不起作用 字符 数组 设置      更新时间:2023-10-16

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

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

这是setMake()的代码:

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

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

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

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

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

*(make + i) != ''

获取值并进行比较,就像设置值一样:

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