c - int arr; 的定义有什么区别吗?和 int arr[1];

标签 c memory-management definition

我只是想知道,定义 int arr;int arr[1]; 之间有什么区别(除了访问之外,我知道我们需要以 arrarr[0] 的形式访问)。据我所知,两者都分配相同大小的内存(sizeof(int))。关于这些分配还有其他细节吗?

最佳答案

int arr;

这里arr是一个int类型的变量。sizeof(arr)将返回整数的大小。

int arr[1];

这里arr是一个int类型的数组,它可以保存int类型的元素。在这种情况下,它只能容纳一个整数元素。sizeof(arr[0]) 将返回数组的第一个元素的大小,该元素是一个整数。

对于局部变量和数组,内存都是在堆栈上分配的。

关于c - int arr; 的定义有什么区别吗?和 int arr[1];,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26838366/

相关文章:

c - 如何处理条件初始化,这是一种好的做法吗?

c - 增加堆缓冲区大小的最佳方法

android - 如何从 Logcat 中的消息日志中检查内存泄漏?

c - 是否所有的 C 函数都需要在头文件中声明

python - 提高函数的可读性和功能性

java - 什么是静态方法和变量?

c - 我如何知道调制解调器何时完成对 AT 命令的响应?

c - 关于左移和右移运算符

c - 如何使用 getchar_unlocked(),我没有得到以下代码中的流程?

c - 分配静态内存(作为 malloc 替换)