这是c ++代码:
'afterValidate'=>"js:function(form, data, hasError) {
if(document.forms['user-form'].required-label.value == '') {
$('<li>Field cannot be blank</li>').appendTo('#user-form_es_');
$('.required-label').css( 'border-color', '#a94442 ' );
$('label[for=requiredField]').css('color','#a94442 ');
}
else {
$('.required-label').css( 'border-color', '#3c763d ' ) ;
$('label[for=.required-label]').css('color','#3c763d ');
return true;
}
}
至于x[5]={1,2,3,4,5};
&x[i]==&*(x+i)==x+i;
,在我看来,&*(x+i)
是一个右值,为什么要使用*(x+i)
。
为什么呢?
答案 0 :(得分:2)
这一行&x[i]==&*(x+i)==x+i;
shell显示了获取数组特定元素地址的3种不同方法。
在您的情况下,有一个数组x
,它存储5个值。 probaly的第一件事看起来很熟悉。 x[i]
将获得i
的第x
个元素,并使用运营商地址,您将获得{{1}的地址} -th的元素。
让我们继续讨论第三个声明i
。由于x+i
实际上只是一个指针指向存储中实际数组的第一个元素的地址,因此您可以通过向x
添加偏移量来获取其他元素的地址。但是,因为您正在使用x
&#39;解决你不会得到“抵消”的价值。元素,但它的地址。要获得使用神奇的x
来解除地址所需的价值。因此,如果*
获得&x[i]
元素的地址且i
执行相同操作,则x+i
将执行与*(x+i)
相同的操作。它将获得x[i]
的{{1}}值。
不知道操作员地址i
和 derefencing-operator x
是什么。在第二个陈述之前相当简单。 &
将获取*
元素的地址。 (x+i)
将通过取消引用地址来获取值,i
将获得解析地址的地址。所以第二个陈述与写*(x+i)
。
然而,解释的行可能会给你一个编译器错误,因为它应该更像这样:&*(x+i)
结论:所有这些事情都做了同样的事情,但略有不同。
答案 1 :(得分:0)
假设我们有这段代码
imagesc
然后这个比较是正确的:
int i = 0;
int x[5]={1,2,3,4,5};
这种比较也是出于类似的原因。
&x[i] == &*(x+i)