В предыдущей статьи стало понятно, что указатель-это не страшно, и является
псевдонимом переменной, так как
int a;     
  a=10;
  int *c;
c=&a;
Теперь "а" == "*с"  то есть псевдонимы, только в первом случае прямая адресация, а во втором
косвенная.
Тогда встаёт вопрос.- А зачем тогда вообще нужны эти указатели.
Ответ простой - к сожалению в языке С есть ограничения, которые нельзя обойти без использования
указателей, например нельзя организовать массив из функций и многое другое.
Сейчас разберём пример использования функции malloc.
Функция malloc выделяет блок памяти, нужного размера, и возвращает указатель на начало блока.
Тип данных на который ссылается указатель всегда void*, поэтому этот тип данных
может быть приведен к желаемому типу данных.

Для написания демки я использовал C++Builder, написал консольное приложение.
В открывшееся окошко программы нужно вставить строчки
#include <iostream>
#include <cstdlib>
Ну вот можно продолжать.
int leng;  // Объявляем переменную для хранения длины выделяемого блока
cout << "Enter the length of the string:-  ";
cin >> leng; // Ввод длины

char * al = (char*) malloc(leng + 1);// Объявляем указатель типа символ и ЯВНО
приводим тип указателя возвращаемого функцией!
Не забываем, что указатель тоже переменная и на него распространяется преобразование типов.

for (int i = 0; i < leng; i++)
al[i] = rand() % 26 + 'a'; // В цикле заполняем блок случайными символами
al[leng]='\0'; //  Дописываем в конец нуль символ строки.
Обратите внимание, что блок выделенный malloc по сути является обычным массивом!

cout << "String:-  " << al << "\n";// Напечатаем строчку
free(al); // Освободим память, так как этот блок нам больше не нужен.

Далее полный текст и скрин программульки.
Удачи всем в освоении С и С++ !!!




#pragma hdrstop
#include <condefs.h>
#include <iostream>
#include <cstdlib>

//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char **argv)
{
int leng;
cout << "Enter the length of the string:-  ";
cin >> leng;
char * al = (char*) malloc(leng + 1);
for (int i = 0; i < leng; i++)
al[i] = rand() % 26 + 'a';
al[leng]='\0';

cout << "String:-  " << al << "\n";
free(al);

system("Pause");

        return 0;
}

http://s8.uploads.ru/t/zQ9Vc.jpg