2013-02-11 2 views
-4

Я мало знаю о C++, и мне нужно иметь дело с функцией на данный момент. Что это значит в прототипе функции?Что такое * & параметр

void myFunc(int &size, signed char *&array); 
+0

'typedef' может упростить чтение:' typedef char * PCHAR; ', тогда он станет' PCHAR & array' – LihO

+2

[так много дубликатов] (http://stackoverflow.com/search?q=%5Bc % 2B% 2B% 5D +% 22 *% 26% 22) –

+0

@LihO Использование 'typedef' здесь скрывает информацию, которая не должна быть скрыта (тот факт, что' array' является ссылкой на указатель). –

ответ

4

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

2

Это означает, что array является reference до signed char *, то есть указатель.

1

думать об этом таким образом:

(int) &size; 
(char*) &array; 
+0

Если вы голосуете, прокомментируйте причину понижения ... – anishsane

2

*& является ссылкой на указатель

Вы допускаете, чтобы позвонить myFunc так:

int size; 
signed char *p; 

myFunc(size, p); 

Обычно передать ссылку на указатель к функции, поэтому можно изменить указатель внутри функции.