В C, функции, такие как printf, объявлены в заголовочном файле stdio.h, но их определения (реализации) обычно находятся в стандартной библиотеке. Когда вы включаете stdio.h в свой код, вы получаете прототипы функций (их объявления), но не сами реализации.
Прототип функции обычно выглядит как:
c
Copy code
int printf(const char *format, ...);
Где ... означает, что функция принимает переменное количество аргументов.
Определение (реализация) функции printf и других стандартных функций находится в стандартной библиотеке C, которая компилируется вместе с вашей программой. В большинстве случаев эта библиотека уже установлена на вашем компьютере, и компилятор автоматически связывает вашу программу с ней.
Если вы используете стандартный компилятор C, то вы обычно не видите кода стандартной библиотеки. Этот код скомпилирован и доступен в виде бинарных объектов, готовых к использованию.
Относительно вашего второго вопроса, код, который вы показали, не является определением функции printf. Этот код в stdio.h содержит прототипы для различных функций стандартной библиотеки, таких как fopen64, freopen64, fdopen и другие, которые относятся к работе с файлами. Функция printf может быть реализована в другом месте в стандартной библиотеке.
Конечная реализация функции находится в dll библиотеке. Вы ее не можете посмотреть, потому что она на машинном коде специфичном для данной архитектуры и операционной системы. Другими словами как вы средствами языка можете "пощупать" внутренности компьютера?
Вы захотите же копнуть еще глубже, что такое стандартное устройство вывода, каким образом байты превращаются в пиксели на экране? )