Вы будете использовать malloc для динамического выделения памяти, потому что:
- во время компиляции вы не знаете, сколько памяти потребуется,
- вы хотите иметь возможность перераспределить память позже (например, используя realloc ),
- вы хотите иметь возможность сбросить выделенную память раньше, чем ожидать ее освобождения в зависимости от области действия вашей переменной.
Я понимаю вашу точку зрения. Вы могли бы подумать, что вы всегда можете использовать декларативный синтаксис для всего этого, даже используя переменные для объявления размера ваших областей памяти, но это будет:
- быть нестандартным,
- дает вам меньше контроля,
- возможно, используйте больше памяти, поскольку вам нужно будет делать копии вместо перераспределения.
Возможно, вы поймете это вовремя, не волнуйтесь.
Кроме того, вы должны попытаться узнать больше о модели памяти. Вы не используете одни и те же пространства памяти при динамическом выделении и при статическом выделении.
Для первых указателей, посетите:
Дружеский совет: Я не знаю, разрабатываете ли вы C на * NIX или Windows, но в любом случае, если вы используете gcc, я рекомендую использовать следующие флаги компиляции, когда вы учите себя:
-Wall -ansi -pedantic -Wstrict-prototypes