-4

我是 C 的初学者。

main() {    
   int *a-ptr = (int *)malloc(int); 
   *a-ptr = 5;
   printf(“%d”, *a-ptr);
}

问题是:这是否保证打印 5?

答案是:不,有两个原因:

  • 你不能在变量名中使用“-”
  • “你没有分配 int 存储”

我不明白第二点。存储不是用这条线分配的吗?
int *a-ptr = (int *)malloc(int);

4

3 回答 3

2

malloc接受大小,而不是类型。你需要做malloc(sizeof(int)).

于 2012-12-17T19:31:38.563 回答
2
    main() {    // wrong. Should return int
int main() {    // better

int *a-ptr =  //wrong. no dashes in variable names
int *a_ptr =  // better, use underscores if you want to have multiparted names

(int *)malloc(int); // wrong. Don't typecast the return of malloc(), also it takes a 
                    // size, not a type
malloc(sizeof(int)); // better, you want enought memory for the sizeof 1 int 

因此,您的代码的更好版本是:

int main() {    
   int *a_ptr = malloc(sizeof(int)); 
   *a_ptr = 5;
   printf("%d", *a_ptr);
   free(a_ptr); // When you're done using memory allocated with malloc, free it
   return 0;
}
于 2012-12-17T19:38:09.500 回答
1

由于多种原因,您的代码无效,并且无法编译。

  1. a-ptr是无效的变量名。-名称中不允许使用,a_ptr而是使用(或其他)

  2. malloc不带类型。它需要一个大小(以字节为单位)来分配。

  3. 请务必使用直引号"而不是您使用的弯引号。

正确的代码如下所示:

int main() {
    int *aptr = (int *) malloc(sizeof(int));
    *aptr = 5;
    printf("%d", *aptr);

    return 0;
}

(转换 from malloctoint *可能是可选的,具体取决于您的编译器。)

于 2012-12-17T19:33:58.980 回答