【问题标题】:Question about using string arrays as function parameters关于使用字符串数组作为函数参数的问题
【发布时间】:2022-01-16 08:28:44
【问题描述】:

我是新手,今天遇到一个小问题,希望得到大神解答,万分感谢。 代码如下。

#include<iostream>
using namespace std;
void sub(char b[]){
    b[] = "world";    //I alse try b*/b,but it is not ok
}
int main(void){
    char a[10] = "hello";
    sub(a);
    cout<<a<<endl;

    system("pause");
    return 0;
}

错误:“]”标记之前的预期主表达式 b[] = "世界"; ^ The error

我希望最终输出是“世界”。函数 sub() 可以正常运行。我该怎么办?

【问题讨论】:

  • 哈哈哈哈,你说得对,我太粗心了,下次我会注意的。
  • 最好将错误消息以文本形式发布,而不是仅以图片形式发布。
  • 使用strcpy 写入现有的char 数组(尽管您需要在实际程序中进行更多安全检查)
  • 一个不简单地分配给一个字符数组。你必须使用std::strcpy 和朋友。另外,如果这真的是 C++,那么使用 std::strings 而不是 char[]。
  • b[] = "world"; //I alse try b*/b,but it is not ok -- 随机尝试是无法正确学习 C++ 的。 C++ 是最难学习的语言之一,最好通过使用同行评审的 C++ 书籍来学习它。

标签: c++ arrays char


【解决方案1】:
strcpy(b, "world"); // need <string.h>

但我会直接使用 std::string(而不是 c-string)。

#include<iostream>
#include<string>
using std::cout;
using std::string;

void sub(string &b){
    b = "world";
}

int main(){
    string a = "hello";
    sub(a);
    cout << a << endl; // output

    system("pause");
    return 0;
}

【讨论】:

  • 非常感谢。其他问题:如果我不想使用strcpy和字符串只是使用数组作为函数参数。我该怎么办?
  • @Hideonbush 据我所知,除非它是声明,否则您不能将字符串文字分配给 c 字符串变量。但是,您可以一个一个地分配字符,例如 b[0] = 'w'; b[1] = 'o';等等。
  • 好的,感谢您的及时回复。下次,除非它是声明,否则我不会将字符串文字分配给 c-string 变量。
【解决方案2】:

正如其他人告诉你的那样,它不是 c++ 风格而是 c 风格,我将尝试解释为什么它不能编译。 当你写b[i]时你告诉编译器:“请到内存位置b + sizeof(b type) * i”,所以当你写b[]时,编译器无法理解你想要什么。

【讨论】:

  • 谢谢,很好的解释。所以b[i]只能赋值给char类型而不是字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 2016-09-11
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 2017-05-29
相关资源
最近更新 更多