c - 原始类型声明在 C 中如何工作?

标签 c pointers

我不是 C 程序员所以请理解 ;)

C 语言具有指针及其所有优点。但是原始类型声明是如何工作的?

例如我可以这样做:

char x = 'a';

那里没有指针,但值必须存储在内存中的某个地方,对吗?我可以把上面的陈述翻译成:

char* _x = malloc(sizeof(char));
char x = *_x;

最佳答案

不,你不能。

malloc(sizeof(char));

会在堆中分配内存,你负责删除它。这样做的好处之一是,分配内存中的数据不会在其作用域结束时“消亡”,它只会在您销毁它时消亡。

char c = 'a'

将存储在堆栈中,并在其作用域结束时自动释放。

编辑:关于您的评论,一般来说,局部变量通常会存储在堆栈中(这当然是自动的)。 malloc、calloc 允许您“请求”堆中的空间,并按您的意愿使用它。如果你想了解更多信息,你可以看here ,如@Jabberwocky所述

关于c - 原始类型声明在 C 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52165690/

相关文章:

c - 释放 2D 动态分配的内存时出错

C++ - 这个双指针/数组结构的真正含义是什么?我很难想象

c++ - vector 中的删除函数不会删除指针?

c++ - 使用 ctime 保存新时间点会覆盖旧字符串吗?

c++ - 复合数据结构和摆弄指针

c++ - 我可以使用 NULL 代替 0 的值吗?

Linux串口的正确初始化顺序

C 反转字符串

c - (C) 有人可以向我解释为什么代码会返回它的作用吗?

java - C printf 未按预期从终端工作