2016-12-18 2 views
-2
int main() 
{scanf("%d",&n); 
float *puncte; 

puncte=(float*)malloc(n*sizeof(float)); 
printf("\nSIZEOF PUNCTE: \n%d",sizeof(puncte)); 

struct varfuri{ 
float x; float y; 
}puncte[sizeof(puncte)-1]; 

return 0;} 

Зачем нужна эта ошибка?Конфликтующие типы для puncte

Ошибка: конфликтующие типы для 'puncte' |

+3

вы получили это определено сначала как 'float', а затем' struct'. Сообщение ясно. –

+0

О, спасибо, гений –

+0

Тогда как мне его определить? –

ответ

0

следующий код:

  1. включает вопрос комментарии
  2. чисто компилирует
  3. демонстрирует, как выделить много экземпляров структуры в массиве
  4. демонстрирует, как обрабатывать ошибки
  5. оператор sizeof() возвращает size_t не int, поэтому все ссылки соответствующим образом изменены

и теперь код

#include <stdio.h> // scanf(), perror() 
#include <stdlib.h> // exit(), EXIT_FAILURE, malloc() 

struct varfuri 
{ 
    float x; 
    float y; 
}; 

int main(void) 
{ 
    size_t numPoints; 

    if(1 != scanf("%lu",&numPoints)) 
    { 
     perror("scanf failed"); 
     exit(EXIT_FAILURE); 
    } 

    // implied else, scanf successful 


    struct varfuri *puncte = malloc(numPoints * sizeof(struct varfuri)); 
    if(NULL == puncte) 
    { 
     perror("malloc failed"); 
     exit(EXIT_FAILURE); 
    } 

    // implied else, malloc successful 

    // the following, on a 32 bit architecture, will return 4 
    printf("\nSIZEOF PUNCTE: \n%lu",sizeof(puncte)); 

    //return 0; not needed when the returned value from `main()` is 0 
} // end function: main 
Смежные вопросы