Когда вы используете char *h
, вы объявляете указатель на переменную char
.Этот указатель хранит адрес переменной, на которую он указывает.
Проще говоря, поскольку вы просто объявляете переменную char как char num='h'
, тогда переменная num
будет содержать значение h
, и поэтому, если вы напечатаете ее, используя printf("%c",num)
, вы получитевыводить как h
.
Но, если вы объявите переменную как указатель, как char *num
, тогда она не сможет содержать никакое символьное значение.Я могу хранить только адрес некоторой символьной переменной.
Например, посмотрите на приведенный ниже код
void main()
{
char a='h';
char *b;
b=&a;
printf("%c",a);
printf("%c",b);
printf("%u",b);
}
, здесь у нас есть одна переменная типа a
и один указатель типа b
,Теперь переменная a
может находиться где-то в памяти, которую мы не знаем.a
содержит значение h
, а &a
означает address of a in memory
. Оператор b=&a
назначит адрес памяти a
для b
.Поскольку b
объявлен как указатель, он может содержать адрес.
Заявление printf("%c",b)
выведет значения мусора.
Оператор printf("%u",b)
выведет адрес переменнойa
в памяти.
, поэтому есть разница между char num
и char *num
.Сначала вы должны прочитать о указателях.Они отличаются от обычных переменных и должны использоваться очень осторожно.