传递给函数的变量是否存储在连续的内存位置?

che*_*oky 0 c parameter-passing calling-convention memory-layout contiguous

我写了这个小函数:

int mayor(int n1, int n2, int n3, int n4, int n5) {

   int mayor = n1;

   for(int *p=&n2; p<=&n5; ++p)

           mayor = *p;

   return mayor;

}
Run Code Online (Sandbox Code Playgroud)

能够保证所有包含该内存块n1n5是连续的?既然我得到了预期的回报值,我希望如此,但我想知道这是否安全.

P__*_*J__ 8

不.变量甚至不在内存中 - 它们可以(全部或仅一些)保存在寄存器中.

所以你的假设是错误的.如果你想将它们放在连续的记忆块中,你需要自己放置它们.

int mayor(int n1, int n2, int n3, int n4, int n5) 
{
  int parameters[5] = {n1,n2,n3,n4,n5};
Run Code Online (Sandbox Code Playgroud)