C++ Passing Pointer to Function (Howto) + C++ Pointer Manipulation

Я нашел этот камень в списке рассылки GCC , который печатает параметры по умолчанию -march и mtune:

$ echo | gcc -v -E - 2>&1 | grep cc1
 /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/cc1 -E -quiet -v - -mtune=generic -march=x86-64

По сути, вы компилируете пустой файл из stdin и при этом вы печатаете команды.

25
задан 5 revs 26 September 2010 в 01:29
поделиться

2 ответа

Чтобы передать указатель на int, это должно быть void Fun(int* pointer).

Передача ссылки на int будет выглядеть так ...

void Fun(int& ref) {
   ref = 10;
}

int main() {
   int test = 5;
   cout << test << endl;  // prints 5

   Fun(test);
   cout << test << endl;  // prints 10 because Fun modified the value

   return 1;
}
3
ответ дан 28 November 2019 в 18:11
поделиться

Возможно, вам будет легче понять, используя функционально более выразительные и мощные функциональные возможности, см. Этот превосходный и настоятельно рекомендуемый C ++ FAQ lite , в частности, смотрите раздел 33.12 и далее, но, тем не менее, Прочитайте его с самого начала этого раздела, чтобы понять и понять его.

Чтобы ответить на ваш вопрос:

typedef void (*foobar)() fubarfn;

void Fun(fubarfn& baz){
   fubarfn = baz;
   baz();
}

Редактировать:

  • & означает адрес ссылки
  • * означает значение того, что содержится по адресу ссылки, называемое разыменованием

. Таким образом, использование ссылки, приведенного ниже примера, показывает, что мы передаем параметр, и напрямую изменим это.

void FunByRef(int& iPtr){
    iPtr = 2;
}

int main(void){
    // ...
    int n;
    FunByRef(n);
    cout << n << endl; // n will have value of 2
}
-1
ответ дан 28 November 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: