首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中传递数组引用

在C++中传递数组引用
EN

Stack Overflow用户
提问于 2013-04-10 18:06:42
回答 4查看 327关注 0票数 0

我是C++的新手,经常遇到很多系统问题。我已经有一段时间没有找到这个问题的具体答案了。我正在尝试运行这段代码:

代码语言:javascript
复制
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的内容,然后将其打印出来。这应该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-10 18:08:36

对数组的引用应如下所示

代码语言:javascript
复制
void test(char (&testChar)[3]){
 // code
}

但是在你的测试函数中,testChar = B;表达式是错误的。你需要explicitly string copy (第二个引用在C++中不变,不像指针),你可能想要这样读:C++ Reference, change the refered variable

编辑:As @ChristianSjöstedt评论道。

Python是“动态类型化语言”,变量的类型和值可以改变,就像在C++ one中一样,声明变量的类型是不变的。

代码语言:javascript
复制
 i = 10         # reference to int 
 i = "name"     # reference to str

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

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

代码语言:javascript
复制
int i = 10;

int中的i可以是char。

Dynamic type languages versus static type languages

票数 1
EN

Stack Overflow用户

发布于 2013-04-10 18:08:57

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

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

代码语言:javascript
复制
template <size_t N>
test( char (&testChar)[N] )
{
  char B[N] = {"BB"};
  stc::copy(B, B+N, testChar);
}

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

代码语言:javascript
复制
template <size_t N>
test(std::array<char,N>& testarray; )
{
  std::array<char, N> B = {"BB"};
  teasArray = B;
}
票数 1
EN

Stack Overflow用户

发布于 2013-04-10 18:12:45

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15922852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档