传递给函数的变量是否存储在连续的内存位置?
Are variables that are passed to a function stored in contiguous memory positions?
我写了这个小函数:
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;
}
是否保证包含n1
到n5
的内存块是连续的?由于我得到了预期的 return 值,我希望如此,但我想知道这是否安全。
没有。变量甚至不必在内存中——它们可以(全部或仅部分)保存在寄存器中。
所以你的假设是错误的。如果你想把它们放在连续的内存块中,你需要自己把它们放在那里。
int mayor(int n1, int n2, int n3, int n4, int n5)
{
int parameters[5] = {n1,n2,n3,n4,n5};
除非是指针,否则传递给函数c 的参数都存储在Stack 或寄存器中。决定是由程序加载器动态分配的。
如果您打算将它们作为连续位置进行管理并使用循环,请使用这些元素启动一个数组。
我写了这个小函数:
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;
}
是否保证包含n1
到n5
的内存块是连续的?由于我得到了预期的 return 值,我希望如此,但我想知道这是否安全。
没有。变量甚至不必在内存中——它们可以(全部或仅部分)保存在寄存器中。
所以你的假设是错误的。如果你想把它们放在连续的内存块中,你需要自己把它们放在那里。
int mayor(int n1, int n2, int n3, int n4, int n5)
{
int parameters[5] = {n1,n2,n3,n4,n5};
除非是指针,否则传递给函数c 的参数都存储在Stack 或寄存器中。决定是由程序加载器动态分配的。
如果您打算将它们作为连续位置进行管理并使用循环,请使用这些元素启动一个数组。