如何为在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
可以指向的对象。
我是 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
可以指向的对象。