Программа на C (malloc) не компилируется в Ubuntu 11.04 - PullRequest
1 голос
/ 15 января 2012

Я установил компилятор gcc из этой sudo apt-get install build-essential команды

, и мой программный код

 #include<stdio.h>

 main()
   {
      int *b;

      b = (int*)malloc(10*sizeof(int));  

      printf("b=%u\n\n",b);
      printf("b+1=%u\n\n",(b+1));
      printf("b+2=%u\n\n",(b+2));

      b[2]=4;
      printf("*(b+2)=%d\n\n",*(b+2));

  }

, когда я пытаюсь скомпилировать эту программу из команды cc -c program.c, тогда я получаюкакая-то ошибка

enter image description here

Ответы [ 2 ]

6 голосов
/ 15 января 2012

Вам не хватает #include <stdlib.h> (для malloc), и строки формата неверны. Используйте %p для печати указателей.

Кроме того, вам не нужно ( и, вероятно, не следует ) приводить возвращаемое значение malloc (в C).

И правильная подпись для main без параметров:

int main(void)

Исправленный код:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *b;

    b = (int*)malloc(10*sizeof(int));

    printf("b=%p\n\n",  (void*) b);
    printf("b+1=%p\n\n",(void*) (b+1));
    printf("b+2=%p\n\n",(void*) (b+2));

    b[2]=4;
    printf("*(b+2)=%d\n\n",*(b+2));

    return 0;
}
0 голосов
/ 15 января 2012

Я не знаю, почему это сработало в видео, возможно, он использует какой-то странный нестандартный компилятор.

Но ваши ошибки в том, что вы используете int вместо unsigned int и передаете указатели в printf, когда он ожидает unsigned int.

...