Я новичок в Arduino и почти десять лет не занимался C ++. Итак, вот мой действительно базовый c вопрос:
Я хочу создать функцию, которая может возвращать две строки, для этого я думал о передаче строк по ссылке. Примерно так:
void return_array_byref((char[]) & device, (char[]) & command)
{
device = malloc(8 * sizeof(char));
device[0] = 'C';
device[1] = '\n';
command= malloc(8 * sizeof(char));
command[0] = 'C';
command[1] = '\n';
}
void loop() {
char * device;
char * command;
return_array_byref(device, command);
...
}
Я пытался использовать char **
, char[] &
, char * &
, но, похоже, ничего не работает. С кодом выше я получаю это:
arduino:6:25: error: variable or field 'return_array_byref' declared void
void return_array_byref((char[]) & device)
^
Как правильно сделать это в C ++?
[РЕДАКТИРОВАТЬ] [РЕШЕНИЕ]
Это код, который я искал. Я пришел к этому решению, основываясь на ответе, представленном ниже, так что заслуга @Doncho:)
void return_array_byref(char * * device)
{
*device = (char*) malloc(sizeof(char) * 8); // allocate the size of the pointer array
(*device)[0] = 'A';
(*device)[1] = 'B';
(*device)[2] = 'C';
(*device)[3] = '\n'; // this is just a new line, does not end the string
(*device)[4] = '\0'; // null terminator is important!
}
void main()
{
char * string;
return_array_byref(&string);
cout << string << endl;
free(string);
}