Задать вопрос

Чем отличается char* от int*, float* и других в Си?

Программирование для меня - кое-что новое, учусь азам по лекциям. И, вот не понимаю, если звёздочка (*) - это указатель, то чем указатель на int отличается от указателя на char? Да, между собой они [char и int] отличаются. Но ведь если файл - только указатель, то чем будет отличаться указатель на char от указателя на int? Всё равно будет что-то вида 0xXXXXXX...
  • Вопрос задан
  • 3297 просмотров
Подписаться 2 Оценить Комментировать
Решение пользователя res2001 К ответам на вопрос (2)
@res2001
Developer, ex-admin
Размер указателя один и тот же, если вы это имеете ввиду.
char* отличается от int* тем, что первый указывает на область памяти в sizeof(char) байт, а второй в sizeof(int) байт. Это важно, например для адресной арифметики.
Например имеем:
int ival[] = {0,1,2,3};
char* pc = "This is a string";
int* pi = &ival;

Если мы делаем pc++, то к pc прибавляется sizeof(char), а в случае pi++ к pi прибавляется sizeof(int).
А так же, когда мы делаем разъименование, то получаем в результате соответствующий тип:
*pc - дает char
*pi - дает int
Если бы не было типизации указателей, то не было бы и адресной арифметики и разъименования. Посмотрите, например, что можно сделать с указателем на void.
Ответ написан