【发布时间】:2013-11-26 14:11:17
【问题描述】:
假设我想为 3 个整数分配内存:
int *pn = malloc(3 * sizeof(*pn));
现在为他们分配我所做的值:
pn[0] = 5550;
pn[1] = 11;
pn[2] = 70000;
要访问第二个值,我会这样做:
pn[1]
但是 [n] 运算符只是 *(a+n) 的快捷方式。那么这意味着我访问索引后的第一个字节。但是 int 是 4 个字节长,所以我不应该这样做
*(a+sizeof(*a)*n)
相反?它是如何工作的?
【问题讨论】:
-
绝对没有说
*(a + n)以字节为单位工作;除非a当然是一个字节指针。所有的指针算术都是根据指针的类型来计算的。