在C语言中,数组的指针是指数组在内存中的起始地址,
-----数组元素的地址是指数组元素在内存中的起始地址
一维数组的数组名为一维数组的指针(起始地址)
下面用代码验证一下 x[i],(px+i),(x+i)和px[i]是否具有相同功能(访问数组第i+1个数组元素)。
#include <stdio.h>
int main(int argc, char *argv[]){
int a[] = {1, 3, 5, 7, 9};
int *p, i, n;
p = a;
n = sizeof(a) / sizeof(int);
printf("%p %p %p\n", a, a+1, a+2);
for(i = 0; i < n; i++){
printf("%d %d %d\n", a[i], *(p+i), *(a+i), p[i]);
}
puts("");
return 0;
}
//打印出来的结果如下
0xbf92c324 0xbf92c328 0xbf92c32c
1 1 1
3 3 3
5 5 5
7 7 7
9 9 9
最后通过编写一个函数,练习巩固一下指针与数组的关系
要求:将整型数组中n个数按反序存放。
#include <stdio.h>
int main(int argc, char *argv[]){
int a[] = {1, 3, 5, 7, 9};
int *p, *q, n, t;
p = a;
n = sizeof(a) / sizeof(int);
q = &a[n-1];
while(p < q){
t = *p;
*p = *q;
*q = t;
p++;
q--;
}
for(t = 0; t < n; t++)
printf("%d ",a[t]);
puts("");
return 0;
//打印结果
9 7 5 3 1