为什么必须在lcs函数中传递指针X和Y?还有什么是错误的,而不是指针传递数组。
lme4.fit <- lme4::nlmer(log10copy ~ nfun(day, p1, b1, p2, b2) ~
(p1|patid) + (b1|patid) +
(p2|patid) + (b2|patid),
data = dat,
start = start,
nlmerControl(optimizer = "bobyqa"))
}
答案 0 :(得分:2)
每当将数组传递给函数时,它都会转换为指向它的第一个元素的指针。并且由于它包含使用它的第一个元素的地址,我们可以从另一个函数更改数组。这称为阵列衰减。即使您不想更改数组,它也会转换为指针。
总而言之,如果不将此转换转换为指针,则无法传递数组。这就是你在这里看到的。从C11标准(N1570)我们也可以引用它: -
除非它是
sizeof
运算符,_Alignof
运算符或一元&
运算符的操作数,或者是用于初始化数组的字符串文字, 具有类型''数组类型''的表达式将转换为类型为''指向类型'的指针的表达式,指向数组对象的初始元素 ,而不是一个左值。如果数组对象具有寄存器存储类,则行为未定义。