我写了这个小功能:
SEQ
是否确保包含select q.*,
( select seq from tab where expire_date = q.expdate1 and id = q.id ) as seq1,
( select seq from tab where expire_date = q.expdate2 and id = q.id ) as seq2
from
(
select id, min(expire_date) as expdate1,
max(expire_date) as expdate2
from tab
group by id
) q;
ID EXPDATE1 EXPDATE2 SEQ1 SEQ2
------ --------------------- --------------------- ------ ------
849123 2011-03-12 12:19:11.0 2017-02-16 11:19:11.0 134228 424128
443121 2011-03-12 12:39:16.0 2017-02-19 11:42:12.0 133228 424828
到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;
}
的内存块是连续的?既然我希望得到期望的返回值,所以希望如此,但是我想知道这是否安全。
答案 0 :(得分:8)
不。变量甚至不必在内存中-它们可以(全部或仅一部分)保存在寄存器中。
所以您的假设是错误的。如果要将它们放在连续的内存块中,则需要自己将它们放置在其中。
int mayor(int n1, int n2, int n3, int n4, int n5)
{
int parameters[5] = {n1,n2,n3,n4,n5};
答案 1 :(得分:-1)
传递给函数c的参数(除非它们是指针)存储在堆栈或寄存器中。决定是由程序加载程序动态分配。
如果您打算将它们作为连续的位置进行管理并使用循环,请使用这些元素启动一个数组。