Я пытаюсь понять понятия указателя в глубину. В следующем коде,Разница между (float *) & * (float *) в C
#include <stdio.h>
int main()
{
int i = 10;
int *iptr = &i;
printf("(float)* : %f\n", (float)*iptr);
printf("(float*) : %f\n", (float*)iptr);
printf("*(float*) : %f\n", *(float*)iptr);
return 0;
}
выход:
(float)* : 10.000000
(float*) : 10.000000
*(float*) : 0.000000
Я также получил предупреждение за тип отливка (float*)
.
Мне трудно даже проанализировать разницу. Если кто-нибудь может помочь мне проанализировать, что такое точное использование всех трех, было бы полезно.
Второй 'printf()' не должен компилироваться. –
@iharob Да, должно быть, несоответствия спецификатора (и нарушения псевдонимов) - это неопределенное поведение, но не ограничение ограничений. –
Он скомпилирован с предупреждающим сообщением @iharob – Preethi