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 中创建一个“字符串”并为其赋值时,它是这样完成的
char *var;
var = "birds are dying";
不喜欢
*var= "birds are dying";
解决方案
这是为使用 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
。
推荐阅读
- mysql - 如何选择类似于字符串前 n 个字符的标题?
- c# - missing_index_[number] 来自哪里
- swift - 如何从 Swift 中数组的第一项获取字典项的值?
- google-apps-script - UrlFetchApp.fetch 1 分钟后返回“超时”
- python - 如何使用 Google App Engine PostgreSQL 数据库设置 psycopg2
- vue.js - 从相同的 axios 到不同的组件,VueJS
- arrays - 如何将权限数组添加到现有数组
- python - 使用 Beautiful Soup 抓取网站时出现编码错误
- angular - 类型'typeof Observable'.ts(2339)上不存在属性'from'
- java - 如何在 android 中使用 Google Vision 人脸检测 API 仅裁剪面部而不是椭圆形的全身