如何为在c中的堆上声明的变量赋值?

How to assign a value to a variable declared on the heap in c?

我是 c 的新手

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

int main() {
    int *var = (int *) malloc(sizeof(int) * 2)  ;

    *var = 22;

    printf("%d \n" , var);

    free(var);

    return 0;
}

这是为使用 malloc 创建的变量赋值的正确方法吗?因为我一直在尝试通过

来给它赋值
var = 22;

因为在 c 中创建 'string' 并为其赋值时,它是这样完成的

char *var;
var = "birds are dying";

不喜欢

*var= "birds are dying";

is this the right way to assign a value to a variable created using malloc?

对于初学者来说,没有使用 malloc 创建的变量。变量由声明创建。

在这一行

int *var = (int *) malloc(sizeof(int) * 2)  ;

声明了变量var,类型为int *,由动态分配的内存地址初始化,使用malloc用于两个类型[=21=的对象].

要访问动态分配的对象,您可以使用下标运算符,例如

var[0] = 22;
var[1] = 33;

写也是一样

*var = 22;
*( var + 1 ) = 33;

因此,要输出分配对象的值,您可以编写

printf("%d \n" , *var);

printf("%d \n" , var[0]);

printf("%d \n" , var[1]);

printf("%d \n" , *( var + 1 ));

至于这段代码

char *var;
var = "birds are dying";

那么变量 var 本身被分配了字符串文字第一个字符的地址 "birds are dying" 而不是变量 var 可以指向的对象。