Я думаю, что C на самом деле поддерживает передачу по ссылке.
Большинство языков требуют, чтобы синтаксический сахар передавался по ссылке, а не по значению.(Например, C ++ требует & в объявлении параметра).
C также требует синтаксического сахара для этого.Это * в объявлении типа параметра и & в аргументе.Так что * и & - это синтаксис Си для передачи по ссылке.
Теперь можно утверждать, что для реального прохождения по ссылке требуется только синтаксис в объявлении параметра, а не на стороне аргумента.
Но теперь приходит C #, который поддерживает путем передачи ссылок и требует синтаксического сахара на как , так и сторонах аргумента и аргумента.
Аргумент, что C не имеет передачи by-ref, заставляет синтаксические элементы выражать его, демонстрируя основную техническую реализацию, вообще не является аргументом, поскольку это более или менее применимо ко всем реализациям.
Единственным оставшимся аргументом является то, что передача по ссылке в C не является монолитной функцией, но объединяет две существующие функции.(Возьмите ref аргумента от &, ожидайте, что ref напечатает *.) Например, C # требует двух синтаксических элементов, но их нельзя использовать друг без друга.
Это, очевидно, опасный аргумент, поскольку многие другие функции в языках состоят из других функций.(например, поддержка строк в C ++)