【问题】指针输出一维数组元素
# include <stdio.h>
void shuchu(int * p)
{
int i;
for (i = 0; i < 5; ++i)
printf("%d\n", * (p + i));
}
int main( void )
{
int a[5] = {2, 4, 6, 8, 10};
shuchu( a );
return 0;
}
该代码利用指针输出数组元素。问题是,第8行printf("%d\n", * (p + i));中,*p表示的是a[0]的值,*(p + 1)为什么不是地址+1,而直接是数组下标+1,即为什么不能是printf("%d\n", * (p + i * 4)); ?
C?数组?指针?输出
[解决办法]
指针是什么类型的,那么指针加1的结果是原指针的地址加上sizeof(指针指向的数据类型)
TYPE * p = NULL;
p++;//p = NULL + sizeof(TYPE)