Указатель делает то, что предлагает его имя, он указывает на область памяти. В случае read
вы сохраняете значение в указателе, а не помещаете значение в местоположение, на которое он указывает. Фактически, используя оператор &
для указателя, вы фактически создаете указатель на указатель. Вот почему явное приведение требуется для использования значения в printf
.
Вместо этого вы должны установить указатель на адрес value
, а затем использовать указатель как обычно:
chPtr = &value;
read(fd[0], chPtr, 1);
printf("the result is %c\n", value);
Более распространенным является использование массива байтов (то есть char []) вместо указателя или вместо этого выделение памяти в куче (см. Malloc).