c - 持有空值的变量是否也占用内存中的空间?

标签 c variables byte bit ram

在任何编程语言中,如果我设置变量:

name = 'Jhon';

因此,它将在 RAM 中占用 4 个字节的空间。但如果:

name = '';

它仍然会在 RAM 中保留一个空白区域,或者会出现什么情况?

最佳答案

对于 C 语言,如果不需要存储来实现程序的可观察行为,则允许编译器不留出存储。例如,如果您有一个类似的程序

int main( void )
{
  int x;
  int y;

  y = some_value();
  printf( "y = %d\n", y );
  return 0;
}

变量x从未被引用,并且在y的计算或显示中不起任何作用(我们假设它对some_value()不可见) )。在这种情况下,编译器可以自由地不为其留出任何空间。

类似地,在类似的程序中

int main( void )
{
  int y = 0;
  printf( "y = %d\n", y );
  return 0;
}

编译器可以确定这与编写完全相同

int main( void )
{
  printf( "y = 0\n" );
  return 0;
}

根本不用为 y 留出空间。

不同的语言有不同的规则;如果您好奇,请询问该特定语言。

关于c - 持有空值的变量是否也占用内存中的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732635/

相关文章:

c - 将文本文件读取到链表数组时出现段错误

c++ - 最小/最大逻辑和文件读取错误

java - 当某些字节错误时,BitmapFactory.decodeStream(inputStream) 总是返回 null

java - Android:无法在文件中保存超过 195 的数字

c# - 为什么 Bool 数据类型的大小在 C# 中不是只有 1 位?

c++ - 源文件未编译,即使在编译过程完成后

c - 如何优雅地退出 X11 事件循环?

c - C代码优化-防止多文件打开

javascript - 切断 Javascript 字符串

PHP 设置普通变量更改 session 变量