Вам нужно выделить для него место в памяти либо с помощью malloc, либо с помощью статического массива. Здесь, в вашем коде, вы используете адрес только одного символа для хранения адресов этих символов, и других, следующих за ним. Это не определено.
Отметьте, шаг за шагом, что вы делаете. Во-первых, вы назначаете указатель на одно символьное пространство в памяти. Затем, используя *b = 'm', вы устанавливаете в этой памяти символ 'm'. Но затем вы получаете доступ к следующей позиции памяти (которая не определена, поскольку для этой позиции не зарезервирована память) для сохранения другого значения. Это не сработает.
Как это сделать?
У вас есть два варианта. Например:
char *b;
char c[5];
b = &c[0];
*b = 'm';
... //rest of your code
Это будет работать, потому что у вас есть место для 5 символов в c. Другой вариант — напрямую выделить память для b с помощью malloc:
char * b = (char*) malloc(5);
*b = 'm';
... // rest of your code
Наконец, возможно, это не то, что вы хотите, но вы можете либо инициализировать массив символов, либо указатель, используя строковый литерал:
char c[] = "hello";
const char* b = "abcdef";
person
Diego Sevilla
schedule
01.06.2011