我是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的内容,然后将其打印出来。这应该怎么做呢?
发布于 2013-04-10 18:08:36
对数组的引用应如下所示
void test(char (&testChar)[3]){
// code
}但是在你的测试函数中,testChar = B;表达式是错误的。你需要explicitly string copy (第二个引用在C++中不变,不像指针),你可能想要这样读:C++ Reference, change the refered variable
编辑:As @ChristianSjöstedt评论道。
Python是“动态类型化语言”,变量的类型和值可以改变,就像在C++ one中一样,声明变量的类型是不变的。
i = 10 # reference to int
i = "name" # reference to str这在Python中是可能的,但在C++ (和C)中是不可能的。
C/C++是静态语言,意思是“静态类型语言”。例如,变量的类型不能在编译时静态地更改和定义。
int i = 10;int中的i可以是char。
发布于 2013-04-10 18:08:57
“在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-10 18:12:45
对于固定大小的数组使用std::array,对于动态(可变长度)数组使用std::vector。
https://stackoverflow.com/questions/15922852
复制相似问题