Я пытаюсь поэкспериментировать с арифметикой указателей, но получаю это предупреждение. Я не могу понять, где это идет не так.
Код написан для игры с арифметикой указателей, так как мои основы слабы.
printf("To Check ptrs \t");
int var[3]={10,20,30};
int *ptr,i;
ptr=var;
for(i=0;i<3;i++)
{
printf("Address is %d \t", ptr);
printf("Value is %d \t", *ptr);
ptr++;
}
ptr=(int*)&var;
for(i=0;i<3;i++)
{
printf("Address is %d \t", &ptr[i]);
printf("Value is %d \t", ptr[i]);
}
ptr_arith.c:14:5: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ptr=&var;
^
Я получил желаемый вывод. Кроме того, когда я использую
ptr=(int*) &var;
, это не дает мне никакой ошибки. Так что, если кто-то может сказать мне, что делает его «несовместимым», я буду благодарен.