·指针的地址占4个字节
#include <stdio.h>
#include <stdlib.h>
int main()
{
int array[] = {15,20,25,30,35};
int i;
int* ptr_array = array;
//赋值完毕后,就可以使用是真访问数组元素了
for(i = 0; i<5; i++)
{
printf("第%d个元素的值为%d\t地址为:%p\n",i+1,ptr_array[i],&ptr_array[i]);
}
return 0;
}
第1个元素的值为15 地址为:0060FEF4
第2个元素的值为20 地址为:0060FEF8
第3个元素的值为25 地址为:0060FEFC
第4个元素的值为30 地址为:0060FF00
第5个元素的值为35 地址为:0060FF04
Process returned 0 (0x0) execution time : 1.717 s
Press any key to continue.
·三种打印方式
1、printf("第%d个元素的值为%d\t地址为:%p\n",i+1,ptr_array[i],&ptr_array[i]);
2、printf("第%d个元素的值为%d\t地址为:%p\n",i+1,*(ptr_array + i),ptr_array + i);
3、printf("第%d个元素的值为%d\t地址为:%p\n",i+1,*ptr_array,ptr_array);
ptr_array ++ //注意这种方法一定要将指针最后移动回去!!!
·逆序
指针逆序思路
#include <stdio.h>
#include <stdlib.h>
#define N 5
/*本程序只支持N为单数*/
int main()
{
//指针实现
int array[N] = {15,20,25,30,35};
//实现数组的逆序,原理就是首尾元素进行交换
int temp; //临时变量
int i;
int* ptr_array_start = array; //指向数组首地址的指针
int* ptr_array_end = array +N - 1;//指向数组末元素的指针
while(ptr_array_start != ptr_array_end)
{
//首尾交换,指针分别进行更新
temp = *ptr_array_start;
*ptr_array_start = *ptr_array_end;
*ptr_array_end = temp;
//首元素指针要向后移动
ptr_array_start ++;
//首元素指针要向前移动
ptr_array_end --;
}
/*
数组实现
for(i = 0; i < N / 2; i ++)//交换次数要除以2,五个数字,交换2次or三次都可以,如果是N次,则又换回去了!
{
//第i个值和第N-i-1个值相交换
temp = array[i];
array[i] = array[N - i -1];
array[N - i -1] = temp;
}
*/
//用指针如何实现交换呢?
printf("\n");
for(i = 0; i < N; i++)
{
printf("%d\n",*(array +i));
}
return 0;
}