我是C ++的新手并且一直遇到很多sytax ..我已经能够在一段时间内找到一个具体的答案了。我试图运行这段代码:
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
的内容,然后打印出来出。该怎么做?
答案 0 :(得分:1)
对数组的引用应该是这个
void test(char (&testChar)[3]){
// code
}
但是在你的测试函数中testChar = B;
表达式是错误的。你需要explicitly string copy(第二个引用在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;
int中的 i
可以是char。
答案 1 :(得分: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;
}
答案 2 :(得分:0)
对于固定大小的数组使用std::array
,对于动态(可变长度)数组使用std::vector
。
答案 3 :(得分: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 ++中数组和指针的可怕混乱。