用地址访问一维数组
2010-07-26
写一个函数,这个函数输出数组的第i个元素的地址及其对应的值。
这个函数使用指针算术运算,并以 getAddress(&array[0], length) 的形式调用。第i个元素的地址就是 ptr + i,为了得到第i个元素的值,使用复饮用操作副(复位)*。所以 *(ptr + i) 表示位置 ptr + i 的内容而不是地址。
#include <stdio.h>
void getAddress(int *ptr, int rows);
main()
{
int wait, length;
int arrayTest[] = {0, 1, 2, 3, 4};
length = sizeof(arrayTest)/sizeof(arrayTest[0]);
getAddress(arrayTest, length);
scanf("%d", &wait);
}
void getAddress(int *ptr, int rows)
{
int i;
for(i = 0; i < rows; i++)
{
printf("值%5d的内存地址为%8u\n", *(ptr + i), ptr + i);
}
printf("\n");
}
程序运行结果:
值 0的内存地址为 1244980 值 1的内存地址为 1244984 值 2的内存地址为 1244988 值 3的内存地址为 1244992 值 4的内存地址为 1244996
在这里,地址是以4为步长进行增长的。
