Я пытаюсь скомпилировать эту программу без предупреждения,Неправильное предупреждение формата в этом гр программе
#include<stdio.h>
int main()
{
int arr[] = {1,2,3};
printf("value1 = %d value2 %d\n", *(&arr+1), *(arr+1));//here is the warning
return 0;
}
Но я получаю время компиляции предупреждения
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
Я компиляцию свою программы на 64 бит ubuntu machine gcc версии 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5).
' * (& arr + 1) '-> адрес' arr' (как указатель на массив из 3 'int'), смещенный размером массива из 3 'int', а затем разыменованный для получения массива из 3 'int', который затем распадается на указатель на 'int' (который указывает на 4-й« int »после первоначального начала' arr', или 1-й «int» второго массива 'int' начиная с адреса 'arr'). – Dmitri