gpt4 book ai didi

c - 我的变量在 C 中存储在内存的哪个位置?

转载 作者:IT王子 更新时间:2023-10-28 23:28:16 26 4
gpt4 key购买 nike

考虑到内存分为数据、堆、栈、代码四段,全局变量、静态变量、常量数据类型、局部变量(在函数中定义和声明)、变量(在main函数中)、指针和动态分配的空间(使用 malloc 和 calloc)存储在内存中?

我认为它们将被分配如下:

  • 全局变量------->数据
  • 静态变量------->数据
  • 常量数据类型----->代码
  • 局部变量(在函数中声明和定义)-------->栈
  • 在主函数中声明和定义的变量----->堆
  • 指针(例如,char *arrint *arr)------->堆
  • 动态分配空间(使用 malloc 和 calloc)--------> 堆栈

我只是从 C 的角度来指代这些变量。

如果我是 C 新手,如果我错了,请纠正我。

最佳答案

你答对了其中一些,但是写这些问题的人至少在一个问题上欺骗了你:

  • 全局变量------->数据(正确)
  • 静态变量------->数据(正确)
  • 常量数据类型 -----> 代码和/或数据。当常量本身存储在数据段中并且对它的引用将嵌入到代码中时,请考虑使用字符串文字
  • 局部变量(在函数中声明和定义)-------->堆栈(正确)
  • main 函数中声明和定义的变量-----> heap 也堆栈(老师想骗你)
  • pointers(ex: char *arr, int *arr) -------> heap 数据或堆栈,取决于语境上。 C 允许您声明一个全局或 static 指针,在这种情况下,指针本身将在数据段中结束。
  • 动态分配空间(使用malloc, calloc, realloc) --------> stack

值得一提的是,“栈”被官方称为“自动存储类”。

关于c - 我的变量在 C 中存储在内存的哪个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14588767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com