Пользовательские типы, проходящие в функцию, является вызовом по значению в C?

StackOverflow https://stackoverflow.com/questions/4184248

  •  10-10-2019
  •  | 
  •  

Вопрос

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

typedef struct
{
    //Bla Bla
} ABC;

void func(ABC abc)
{

}

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

Это было полезно?

Решение

Звоните по значению. С всегда Звоните по значению.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top