от
Я хочу передать указатель на функцию, которая передает этот указатель другой функции, которая указывает на массив, и после завершения этой функции я хочу прочитать значение в функции вызывающего. Вот пример кода, как я хочу, чтобы он работал:
void fun_1(const char *data)
{
  /* some code */
  fun_2(data);
}

void fun_2(const char *data)
{
  /* some code */
  fun_3(data);
}

static bool fun_3(const char *data)
{
  static char buffer[20];
  /* some code */
  data = buffer;
  return true;
}
И для функции fun_1 я хочу передать static char * resp и после завершения fun_3 я хочу иметь адрес буфера и затем считывать его, но теперь, когда fun_3 завершается, resp всегда равен NULL.              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
C это передать по значению. Присвоение локальной функции внутри функции является временным, эффект не передается переменной параметра вызывающей стороны. В вашем случае я подозреваю, что вы не хотите использовать присваивание, а скорее
strcpy
или
memcpy
, чтобы скопировать буфер в буфер, предоставленный вызывающим кодом. Будьте осторожны, чтобы вызывающий код выделил достаточно большой буфер, и заставьте вызывающую передачу передать размер буфера, чтобы избежать переопределения доступного пространства:
static bool fun_3(const char *data, size_t size) {
  char buffer[20];
  if (size
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...