持有空值的变量是否也占用了ram中的space?

Does variables holding the empty value also occupy the space in ram?

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

name = 'Jhon';

所以,它会在RAM中占用space的4个字节。但是如果:

name = '';

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

以下假设代码是在 C 中,并且变量不是简单地优化为不存在:

因为它被标记为 C,我假设 namechar * 类型,或者指向 char 的指针。这意味着变量 name 本身将始终占用 4 个字节(32 位系统)或 8 个字节(64 位系统),因为这通常是指针的大小。

但是,name 指向的内存量会随着您的描述而变化,但需要注意的是 - 您需要为终止字符添加一个额外的字节。该字符是一个特殊字符,向程序指示字符串已完成。

对于以上两者,char * name = "Jhon"; 实际上需要 13 个字节的 space - 8 个字节用于指针,4 个字节用于每个字符,另一个字节用于终止字符。同样,char * name = ""; 需要 9 个字节的 space - 8 个字节用于指针,1 个字节用于终止字符。

对于 C,如果存储不是实现程序的可观察行为所必需的,则允许编译器不预留存储。例如,如果您有一个像

这样的程序
int main( void )
{
  int x;
  int y;

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

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

类似地,在

这样的程序中
int main( void )
{
  int y = 0;
  printf( "y = %d\n", y );
  return 0;
}

编译器可以确定这和写法完全一样

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

根本不用为y留出space。

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