在Objective-C编译器上没有正确编译C程序

时间:2013-02-23 02:56:06

标签: c objective-c pointers int scanf

我对Objective-C比较陌生 我知道它是C的超集。但是当我尝试在GCC中编译这个C代码时,它给了我一个错误,我无法执行代码。

  #include <stdio.h>  
  int main(){  
   int x;
   printf("Input int:\n");
   scanf("%d", x);
   printf("%d", x);
    return 0;             
}

当我执行其他代码时,没有错误,但输出错误。 注意:唯一的变化是“int * x”。

   #include <stdio.h>  
   int main(){  
   int *x;
   printf("Input int:\n");
   scanf("%d", x);
   printf("%d", x);
    return 0;             
}

  INPUT: 3
  OUTPUT: 2147307520

1 个答案:

答案 0 :(得分:9)

你需要像第一个那样为整数分配空间,但你需要将指针传递给scanf(),如第二种那样;你需要将整数的地址传递给scanf()。你应该写:

#include <stdio.h>  

int main(void)
{  
    int x;
    printf("Input int:\n");
    scanf("%d", &x);
    printf("%d\n", x);
    return 0;             
}

现在正在使用C代码;它也有可能作为目标C运作。最好在打印输出结尾处包含换行符。