Чтобы расширить сказанное, доступ к членам массива вне границ приводит к неопределенному поведению. Неопределенное поведение означает, что буквально может произойти все что угодно . Невозможно эксплуатировать неопределенное поведение, если только вы не глубоко погружены в эзотерические платформенные хаки. Не делай этого.
Если вам нужен «динамический массив», вам придется позаботиться о нем самостоятельно. Если ваши требования просты, вы можете просто malloc
и realloc
буфер. Если ваши потребности более сложны, вы можете определить структуру, которая хранит отдельный буфер, размер и число, и написать функции, которые работают с этой структурой. Если вы только учитесь, попробуйте оба варианта.
Наконец, ваш синтаксис объявления функции действителен, но архаичен. Эта форма редко встречается и практически не слышна в новом коде. Объявите put
как:
int put(int x) {…}
И всегда объявлять main
как:
int main(int argc, char **argv) {…}
Имена argc
и argv
не важны, но типы имеют значение. Если вы забудете эти параметры, демоны могут вылететь из вашего носа.