我已经从这个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
命令编译该程序时
然后我得到一些错误
答案 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。