Си: почему нужно выделять память :)
Учебный пример, цель - показать "упёртому" товарищу, что память "автоматически" не выделяется, а указатель не есть массив (п. 7.2).
Стандартная функция копирования строки strcpy
память под строку назначения не выделяет. Соответственно, в нашей программе без выделения памяти под s
(указатель на строку, в которую копируем), ничего не копируется и выводится сообщение "Null pointer assignment".
#include <stdio.h> #include <string.h> #include <alloc.h> void main () { char *s,*p="Test string"; //без выделения памяти - Null pointer assignment! s=(char *)calloc(strlen(p),sizeof(char)); //или: //s=new char [strlen(p)]; puts (strcpy(s,p)); }
24.12.2011, 12:58 [9534 просмотра]