Как передать в счетчик переменную-счетчик для функции - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть функция в main, которая берет строку из функции main.

В основном у меня есть следующий код:

int main(void)
{
  char string[] = "string" ;

  function(string);

  return 0;
}

В этой функции у меня есть цикл итерации по строке. Когда определенное условие выполняется, я вызываю другую функцию, которая должна снова взять строку, а также счетчик.

unsigned int function(char* string)
{
  int counter = 0;
  while (string[counter] == ...)
  {
     if (... some condition ...) 
       anotherFunction(&string, &counter)
  }
}

прототип функции anotherFunction():

anotherFunction(char* string[], int* counter)

Проблема заключается в том, чтокак мне обработать строку со счетчиком здесь в этой функции?

void anotherFunction(char* string[], int* counter)
{
  // ??? string[counter] // ???
}

1 Ответ

0 голосов
/ 10 ноября 2019

Вы передаете как string, так и counter на anotherFunction() как указатели, поэтому для доступа к символу в строке вам необходимо отменить ссылку на оба:

*string[*counter]
^       ^

Однако этоНе совсем понятно, почему вы передаете эти аргументы указателем. В случае string это почти наверняка ошибка. В случае counter это необходимо, только если anotherFunction() должен изменить counter и чтобы это изменение было видно в вызывающей функции.

Вероятно, вы намеревались либо :

void anotherFunction( char* string, int* counter)

, затем

string[*counter]

или

void anotherFunction( char* string, int counter)

и

string[counter]

Если вы хотите изменить counter возможно, лучше просто вернуть значение:

int anotherFunction( char* string, int counter);

Тогда:

counter = anotherFunction( string, counter ) ;
...