[英]Passing an Array Reference in C++
我是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
并使该函数用局部变量B
的内容替换A
的内容,然后将其打印出来。 该怎么做?
对数组的引用应该是这样的
void test(char (&testChar)[3]){
// code
}
但是在你的测试函数testChar = B;
表达是错误的。 你需要显式字符串复制 (第二个引用不会在C ++中更改,而不是像指针一样),为此您可能希望阅读: C ++ Reference,更改引用的变量
编辑 :正如@ChristianSjöstedt所评论的那样。
Python是“动态类型语言”,其中变量的类型和值可以改变,而在C ++中,你声明它不会改变的变量的类型。
i = 10 # reference to int
i = "name" # reference to str
这在Python中是可能的,但在C ++(和C)中则不行
C / C ++是静态语言,意思是“静态类型语言”。 例如,变量的类型不能在编译时进行静态更改和定义。
int i = 10;
i
在int中可以是char。
“在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;
}
对于固定大小的数组使用std::array
,对于动态(可变长度)数组使用std::vector
。
这是您可能正在寻找的代码
#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 ++中数组和指针的可怕混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.