Member 12975649 Ответов: 2

Какой аргумент я должен передать функции myfunk?


What function argument i have to pass to function Myfunk,c without changing the defition?

void MyFunc(int * & data) {data++;}
void main () {
 int a = 5;
 MyFunc(&a);
 cout << a;
}


Что я уже пробовал:

Я попробовал адресную память & a.

2 Ответов

Рейтинг:
2

CPallini

Это занимает ссылка на указательint).
Попробуйте, например:

#include <iostream>
using namespace std;

void MyFunc(int * & data) {data++;}

int main ()
{

  int a [] = { 12, 15, 27, 42 };

  int * p = &a[2];

  cout << *p << endl;

  MyFunc( p );

  cout << *p << endl;
}


Рейтинг:
2

Jochen Arndt

Вы должны передать ссылку на int*:

int someVal = 123;
int *pSomeVal = &someVal;
MyFunc(pSomeVal);
Поскольку ссылка должна быть значением lvalue, вы должны создать переменную, а не просто передать адрес переменной, которая не является значением lvalue.

Поскольку ваша функция увеличивает указатель, использование массива имеет больше смысла (избегайте доступа за пределы границ):
int someVals[] = { 1, 2, 3 };
int *pSomeVal = someVals;
MyFunc(pSomeVal);
cout << *pSomeVal;