指向数组元素的指针可以用来访问特定索引位置的数组元素,并且指向数组元素的指针的算术运算和数组索引的算术运算两者之间具有相同的语义。下表展示了访问数组a(元素类型为T)时抵达常见操作。
通过索引或指针对数组a(元素类型为T)进行访问的代码
基于索引的代码 | 基于指针的代码 |
---|---|
int i; | T *p; |
i = 0; | p = a;或p = &a[0] |
a[i] | *(p + i) |
a[i].f | (p + i)->f |
i ++ | p ++ |
i += K | p += K |
i = N | p = &a[N] 或 p = a + N |
实例代码一:
使用指针进行数据访问
size_t
strlen(const char * str)
{
register const char *s;
for(s = str; *s; s++)
;
return s - str;
}
使用索引进行数据访问
int strlen(const char *s)
{
int i = 0;
while(a[i ++])
;
return i - 1;
}