#define N 20
int a[2N], i, *p, sum;
p = a;
/* p=a is equivalent to p = *a[0];
• p is assigned 300.
• Pointer arithmetic provides an alternative to array indexing.
• p=a; is equivalent to p=&a[=]; (p is assigned 300)
我不知道p=*a[0]
和p=&a[0]
是一样的? *a[0]
引用内存地址处的元素。
答案 0 :(得分:5)
第1点
您理解,此处$('.table tbody').append('<tr><td contenteditable="true">1</td><td contenteditable="true">1</td><td contenteditable="true">1</td><td contenteditable="true"><span class="glyphicon glyphicon-trash form-control row-remover">del</span></td></tr>');
$('.table').on('keydown', 'td:last-child', function (e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
$('tbody').append('<tr><td contenteditable="true">2</td><td contenteditable="true">2</td><td contenteditable="true">2</td><td contenteditable="true"><span class="glyphicon glyphicon-trash form-control row-remover">del</span></td></tr>');
}
});
$('span.glyphicon-trash').on('click', function () {
$(this).closest('tr').remove();
});
无效代码?
此int a[2N]
并不代表2N
,而是2*N
被视为后缀(对于整数文字N
)无效
感谢 @LưuVĩnhPhúc先生的评论。
如果您想要2
之类的内容,请写下int a[40]
第2点
不,他们不一样。实际上,使用当前的代码段,
int a [2*N]
和p=*a[0]
相同
p=&a[0]
无效。
FWIW,*a[0]
和p = a;
相同,因为数组名称代表基地址,即第一个元素的地址在阵列中。
答案 1 :(得分:1)
p = a
和p = &a[0]
确实相同。在这种情况下,您将数组中第一个元素的地址分配给p
(因为数组的名称=指向其第一个元素的指针)。 p=*a[0]
和p=&a[0]
不一样; *a[0]
要求a
是指针数组,并取消引用其第一个成员。
答案 2 :(得分:0)
p = &a[0]
的含义如下
例如:
int a[4];
a[0] a[1] a[2] a[3]
a --------> [ ][ ][ ][ ]
<强>当量强>
// Reference
&a[0] = a;
&a[1] = a+1;
...
&a[3] = a+3;
// Value
a[0] = *a
a[1] = *(a+1)
..
a[3] = *(a+3)
在C编程数组中,数组的名称始终指向数组的第一个元素。这里,数组的第一个元素的地址是&a[0]
。此外,a
表示指向它的指针的地址,即基地址。因此,&a[0]
相当于a
,因此p = a
或p = &a[0]
都相同。