Определяемые пользователем типы Передача в функцию является вызовом по значению в C? - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть структура, и я передаю эту структуру в функцию.Может быть, прототип функции:

typedef struct
{
    //Bla Bla
} ABC;

void func(ABC abc)
{

}

Этот вызов функции является вызовом по значению или вызовом по ссылке?Кто-то говорит, что «C не имеет конструктора копирования, поэтому мы не можем передавать пользовательские типы со значением».Эта идея верна?

1 Ответ

4 голосов
/ 15 ноября 2010

Звонок по значению. C всегда вызов по значению.

(C не имеет конструкторов копирования, но структуры по-прежнему можно копировать, создав вторую структуру с исходной структурой в качестве ее инициализатора. Параметры функции инициализируются значениями, которые вы передаете в качестве аргументов; это тот же механизм в работе. )

...