#c
#c
Вопрос:
Я новичок в C и наткнулся на некоторый код, касающийся указателей, и мог бы воспользоваться некоторой помощью в его расшифровке. Что это значит? Похоже, что переменная p преобразуется в указатель на int. Меня смущает код (int *).
*(int *)p = 0x113
Ответ №1:
Он преобразует p
в указатель на int, а затем сохраняет (целое) значение 0x113
в указанном местоположении.
Ответ №2:
Когда вы сталкиваетесь с чем-то подобным, лучший способ подойти к этому — отделить его и выполнять по одному шагу за раз. Начните с того, что немедленно приводит к соответствующей переменной, и переходите оттуда. Вот оно
* (int *) p
Начиная с середины, выполняется приведение к указателю типа int:
(int *)
Приведение работает с переменной p
. Итак, вы знаете, что выполняете приведение p
к int *
. Итак, следующее просто говорит о приведении переменной p
к типу int *
:
(int *)p
Тогда последняя часть головоломки — это *
, в которой говорится о разыменовании всего «shebang». Итак, в его окончательной форме вы просто разыменовываете, p
который был приведен к int *
:
*(int *)p
Ответ №3:
В нем говорится: «обработайте p как указатель на тип int, затем сохраните значение 0x113 в 4 байтах, на которые указывает p» (при условии, что int равен 4 байтам). В результате, если, например, p объявлен как указатель на char , эта команда сможет изменять 4 байта вместо всего одного (размер символа).