繁体   English   中英

如何在C ++中将字符串数组作为常量传递给函数?

[英]How can you pass an array of strings to a function as constant in C++?

我正在进行一项结构化的编程作业,该作业要求我编写一个程序,该程序允许用户输入名称等等。 将名称放入字符串数组后,我想做的就是将它们打印到屏幕上。 我曾希望通过将数组及其中包含的名称数量传递给一个函数,然后将其打印到屏幕上来实现此目的。 我想将名称的数组和数目作为常量传递,这样可以保护它们,因此它们不能被函数修改,而只能是只读的。 我不明白为什么我不能在字符串数组或名称数之前放置const。

void writeNames (const string namelist[], const int number_of_names)

这是我只需要接受的东西,还是可以将两者都作为只读方式传递给函数? 我可以不这样做而完成作业,因此这比“帮助我完成作业”更多地是一个好奇的问题。

PS Vectors似乎是一种使用字符串之类做更多事情的方法,但是我们还没有在课堂上接触过它们,因此我也无法使用它们。

谢谢

没有看到函数内部的功能,很难回答这个问题,但是我的水晶球说您正在做的事情很可能会修改方法中的一个参数,因此编译器在抱怨,因为您声明了参数const。

举个例子,这样的事情就可以了:

void writeNames(const std::string namelist[], const int number_of_names)
{
    for(int i = 0; i < number_of_names; i++) {
        std::cout << namelist[i] << std::endl;
    }
}

但是,由于您要更改以下变量之一,因此类似的事情会导致编译器错误:

void writeNames(const std::string namelist[], const int number_of_names)
{
    while(number_of_names--) {   // <-- We're modifying a const value here
        std::cout << namelist[count] << std::endl;
    }
}

顺便说一句,将const修饰符放在“ number_of_names”参数上有点多余,因为您要按值传递参数,因此在函数内更改值不会影响调用函数中输入参数的值。 但是,数组中任何字符串的更改都将反映在调用函数中,因此在那里的const修饰符才有意义。 通常,仅在指针或通过引用传递的参数上使用const。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM