Если предположить, что адрес 0xCF800000 свободен для записи:Указатель на конкретный адрес в C
А) Правильно ли сказать, что оба кода дают одинаковый результат?
int main(void)
{
volatile unsigned long *pt = (volatile unsigned long *) 0xCF800000;
*pt = 0x00000000;
}
и
int main(void)
{
(*(volatile unsigned long *) 0xCF800000) = 0x00000000;
}
B) На первом коде, оператор "(летучий беззнаковое долго *)" перед 0xCF800000 необходимо или избыточность?
C) В первом коде есть переменная pt, у которой есть свой собственный адрес, где я помещаю некоторый контент: 0xCF800000. При разыменовании pt компьютер берет содержимое pt (0xCF800000), «находит» этот адрес и присваивает этому месту 0x00000000. Во втором коде я не могу точно понять, как это работает, поскольку нет переменной. Похож на информацию 0xCF800000 «нигде».
Примечание: Я не думаю, что требуется «volatile». Объект в указанном адресе ссылается только один раз, поэтому его все равно нужно получить. – wildplasser
Эти вопросы взяты из собеседования? – user31264
ahahaha. Нет почему? @ wildplasser действительно! Неустойчивость существует только потому, что это сомнение появляется во время класса о GPIO –