0

我是 C++ 新手,一直遇到很多语法问题。我有一段时间没能找到具体的答案。我正在尝试运行这段代码:

void test(char &testChar){
    char B[3] = {"BB"};
    testChar = B;
}

int main(int argc, const char * argv[])
{
    char A[3] = {"AB"};
    test(A);
    std::cout << A;

    return 0;
}

我想将我的变量传递A给函数test,并让该函数将 的内容替换A为局部变量的内容B,然后将其打印出来。这应该怎么做?

4

4 回答 4

1

对数组的引用应该是这个

void test(char (&testChar)[3]){
 // code
}

但是在你的测试函数testChar = B;表达式中是错误的。你需要显式地复制字符串(第二个引用在 C++ 中不会改变,不像指针)你可能想阅读:C++ Reference, change the refered variable

编辑:正如@ChristianSjöstedt 评论的那样。

Python 是“动态类型语言”,其中变量的类型和值可以更改,而在 C++ 中,您声明变量的类型不会更改。

 i = 10         # reference to int 
 i = "name"     # reference to str

这在 Python 中是可能的,但在 C++(和 C)中是不可能的

C/C++ 是静态语言,意思是“静态类型语言”。例如,变量的类型不能在编译时更改和静态定义。

int i = 10;

iint 可以是 char。

动态类型语言与静态类型语言

于 2013-04-10T10:08:35.630 回答
1

“在 C++ 中传递数组引用”

假设您要将数组的引用传递给函数,并将该数组的元素设置为存储在另一个数组中的元素,您可以使用std::copy,因为数组不可赋值。最好使用模板函数来处理数组的大小:

template <size_t N>
test( char (&testChar)[N] )
{
  char B[N] = {"BB"};
  stc::copy(B, B+N, testChar);
}

但我建议你使用std::array,它是可复制和可分配的:

template <size_t N>
test(std::array<char,N>& testarray; )
{
  std::array<char, N> B = {"BB"};
  teasArray = B;
}
于 2013-04-10T10:08:57.283 回答
0

用于std::array固定大小的数组或std::vector动态(可变长度)数组。

于 2013-04-10T10:12:45.270 回答
0

这是您可能正在寻找的代码

#include <string.h>

void test(char *testChar){
    char B[3] = {"BB"};
    strcpy(testChar, B);
}

int main(int argc, const char * argv[])
{
    char A[3] = {"AB"};
    test(A);
    std::cout << A;

    return 0;
}

但是有各种各样的原因表明这样的代码是一个坏主意。如果你想做字符串操作,那么你应该从std::string类开始,而不是陷入可怕的混乱,即 C++ 中的数组和指针。

于 2013-04-10T10:19:25.820 回答