C程序(malloc)没有在ubuntu 11.04中编译

时间:2012-01-15 18:26:10

标签: c linux ubuntu-11.04

我已经从这个sudo apt-get install build-essential命令

安装了gcc编译器

我的程序代码是

 #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 个答案:

答案 0 :(得分:6)

您错过#include <stdlib.h>malloc),格式字符串错误。使用%p打印指针。

此外,您不需要(and probably shouldn't)转换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;
}

答案 1 :(得分:0)

我不知道为什么它在视频中起作用,它可能使用了一些奇怪的非标准编译器。

但是你的错误是因为你使用的是int而不是unsigned int,并且当它需要unsigned int时你会将指针传递给printf。