У меня есть функция, и я хочу, чтобы вернуть массив междунар, но я не хочу, чтобы создать переменную только для этого, что, как этоВозвращение массива на лету (C)
int* foo()
{
static int bar[]={1,2,3}; // edit thanks to comments
return bar;
}
Чтобы обойти это, я попытался это:
return (Uint8Type*) gAppCanContext.BluetoothMacAddr[0] + MacAddr[1] + '-'\
+ gAppCanContext.BluetoothMacAddr[2] + MacAddr[3] + '-' ;
Но это не работает. Я также пробовал:
return (Uint8Type*[]){ MacAddr[0] , MacAddr[1] + '-' MacAddr[3] ... };
Он компилируется с предупреждением, и если я выполняю программу, он замерзает. Я тоже пытался играть со звездочками и амперсандами, но я не мог заставить его работать правильно.
Возможно ли это? Если да, то как?
Добавлено: I can not use malloc - это встроенная система без динамического распределения.
Ваш 'функция Foo' фактически не работает. Помимо хранения строк в 'int []', использование возвращаемого значения вызывает неопределенное поведение. Используйте 'malloc'. –
Вы не можете конкатенировать строки таким образом в C. Строки - это просто указатели - добавление изменяет смещение указателя, а не добавляя символы. –
Итак, не обращая внимания на проблемы с вашим кодом, почему ненависть к переменным? –