0

我写了这个小函数:

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;

}

是否保证包含n1to的内存块n5是连续的?既然我得到了预期的返回值,我希望如此,但我想知道这是否安全。

4

2 回答 2

8

不,变量甚至不必在内存中 - 它们可以(全部或仅部分)保存在寄存器中。

所以你的假设是错误的。如果你想把它们放在连续的内存块中,你需要自己把它们放在那里。

int mayor(int n1, int n2, int n3, int n4, int n5) 
{
  int parameters[5] = {n1,n2,n3,n4,n5};
于 2018-08-04T21:38:34.490 回答
-1

传递给函数 c 的参数(除非它们是指针)存储在堆栈或寄存器中。决定是分配是由程序加载器动态分配的。

如果您打算将它们管理为连续位置并使用循环,请使用这些元素启动一个数组。

于 2018-08-04T21:46:43.573 回答