返回一个字符串/按引用传递

时间:2016-10-27 14:55:31

标签: c++ string arduino pass-by-reference

我正在为Arduino板写一些C ++代码,它附带了一些硬件。在代码的各个地方,我需要构造一个字符串,其中包含各种连接硬件的值,并通过串行发送它作为命令的一部分。因为它需要成为通过串行发送的非常特定命令的一部分,所以我首先构造它并在整个命令准备就绪时发送它。

目前我正通过以下功能

进行此操作
'String constructDataString ()
 {
    // Set up data to transmit
    String dataStr = String(var1);                          
    dataStr += ",";
    dataStr += String(var2);
    dataStr += ",";
    dataStr += String(var3);        
    dataStr += ",";
    dataStr += String(var4);    
    dataStr += ",";
    dataStr += String(var5);                            

    return dataStr;
 }'

然后我用

调用它
String dataString = constructDataString ();

我想知道是否可以通过在main中声明一个字符串然后通过引用将它传递给函数并允许函数直接修改它来实现这一点。我尝试了几种方法,但是我无法让它工作。我尝试了类似下面的东西,但并不熟悉这样做,所以我希望有人可以提供帮助。

原型

void constructDataString (String* extString)

从主要电话

String dataString =””;
String* dataStringPtr = & dataString;
constructDataString (dataStringPtr);

功能

void constructDataString (String* extString)
{
 // Set up data to transmit
    extString = String(var1);                           
    extString += ",";
    extString += String(var2);                                  
    extString += ",";
    extString += String(var3);      
    extString += ",";
    extString += String(var4);  
    extString += ",";
    extString += String(var5);
}

1 个答案:

答案 0 :(得分:2)

当然,你可以。但是,在constructDataString的正文中,您需要使用*extString而不是extString来取消引用指针。 否则,您可以在C ++中使用引用。

使用该引用,代码将是:

void constructDataString (String& extString)
{
 // Set up data to transmit
    extString = String(var1);                           
    extString += ",";
    extString += String(var2);                                  
    extString += ",";
    extString += String(var3);      
    extString += ",";
    extString += String(var4);  
    extString += ",";
    extString += String(var5);
}

你可以按如下方式使用它:

String dataString =””;
constructDataString (dataString);