Когда использовать пустой указатель на указатель на символ? - PullRequest
0 голосов
/ 26 декабря 2018

В какой ситуации мы должны предпочесть указатель void указателю char или наоборот?

На самом деле оба могут быть преобразованы по типу в любой из типов данных.

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018

void указатели используются, когда тип переменной, на которую указывает указатель, неизвестен.Например, функция malloc () возвращает пустой указатель, ссылающийся на выделенную память.Затем вы можете привести указатель к другим типам данных.

Могут быть случаи, когда вам нужно создать указатель, чтобы просто сохранить адрес.Вы можете использовать пустой указатель там.

0 голосов
/ 26 декабря 2018

Это больше о читаемости и структуре кода, я не хочу видеть, что функция нуждается во вводе, скажем, указатель на структуру и получает ее через char *, первое, что приходит мне в голову, если я вижу char *, это строка (вчистый термин c, массив символов, завершается нулем), с другой стороны, с void * Я предупреждаю, что будет передано что-то общее, хороший пример - qsort function.
, так что не все о том, будет ли онработает или компилируется, он тоже должен быть читаемым,

0 голосов
/ 26 декабря 2018

Указатель void - это указатель на «любой тип», и его необходимо преобразовать в указатель на фактический тип, прежде чем на него можно будет разыменовать.

Указатель на char являетсяуказатель на char, который имеет свойство, к которому вы также можете обращаться (части) к другим типам через него.

Вы должны использовать void *, если подразумевается, что значение «любой тип» (или один из нескольких типов и т. д.).Вы должны использовать char * при доступе к char (очевидно) или к отдельным байтам другого типа в качестве необработанных байтов .

...