2013-04-10 2 views
0

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

Я видел для этого двойного указателя, как, например:

Abc* p; 
function(&p); 

function(Abc** p){ 
    (*p) = 0; 
} 

Но мне сказали, что это не самый лучший способ приблизиться к нему. Как может быть лучше? Будет ли это работать? :

Abc* p; 
function(p); 

function(Abc* p){ 
    p = 0; 
}  

Благодаря

+2

Полное руководство по передаче указателя по ссылке - передайте его по ссылке 'function (Abc * & p)'. –

ответ

3

Нет, это не будет работать. Это скопирует значение p в функцию, а затем изменит только эту копию.

Самый подходящий способ передать что-либо по ссылке в C++ - использовать ссылочный тип. Они обозначаются амперсандом в типе. Вы можете взять ссылку на указатель:

Abc* p; 
function(p); 

void function(Abc*& p){ 
    p = 0; 
} 

Это означает, что, даже если вы прошли p напрямую, не копируется в функцию. Аргумент p - это ссылка адресуемого предмета.

+0

Хорошо, спасибо! Я не знал, что вы можете использовать оба * и &. Так что это имеет смысл. – Frion3L

Смежные вопросы