首页 > 解决方案 > 如何为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 中创建一个“字符串”并为其赋值时,它是这样完成的

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

不喜欢

*var= "birds are dying";

标签: cpointersmemorymallocheap-memory

解决方案


这是为使用 malloc 创建的变量赋值的正确方法吗?

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

在这一行

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

声明变量var的类型int *由动态分配的内存地址初始化,malloc用于该类型的两个对象int

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

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


推荐阅读