Passage by Reference in String Class

I have seem two ways to do that through pointer (as commom) and direct by address, which one is better or they are the same ?
What about the use in Strings, is better define the size or not ?

include <Arduino.h>

void myRename(String *c){
   *c="JR1";
    c->concat(" myRename");
}

void myRename2(String &c){
    c ="JR2";
    c.concat(" myRename2");
}


void setup()
{
	Serial.begin(9600);

	String name1="Robert";
	String name2;

	String name3[50]="NAME 3"; // Received by the function: ADDRESS -> &name3[0]

    Serial.println("NAME 1:");
	myRename(&name1);
	Serial.println(name1);
	myRename2(name1);
	Serial.println(name1);

	Serial.println("\nNAME 2: ");
	myRename(&name2);
	Serial.println(name2);
	myRename2(name2);
	Serial.println(name2);

    Serial.println("\nNAME 3: ");
	myRename(name3);
	Serial.println(*name3);
	myRename2(*name3);
	Serial.println(*name3);

//======================================
    int a = 10;
    int &b = a;
    b = 20;
    Serial.println("\n\n===============================================\nADDRESS: ");
    Serial.println(a); //20

    int c = 10;
    int *d = &c;
    *d = 20;
    Serial.println("\nPOINTER: ");
    Serial.println(c);//20



}

void loop()
{

}

F.60: Prefer T* over T& when “no argument” is a valid option

Reason A pointer (T*) can be a nullptr and a reference (T&) cannot, there is no valid “null reference”. Sometimes having nullptr as an alternative to indicate “no object” is useful, but if it is not, a reference is notationally simpler and might yield better code.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.