C语言第46课指针与数组实现逆序

·指针的地址占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       地址为:0060FF005个元素的值为35       地址为:0060FF04
		
		Process returned 0 (0x0)   execution time : 1.717 s
		Press any key to continue.
		
		
·三种打印方式
	
		1printf("第%d个元素的值为%d\t地址为:%p\n",i+1,ptr_array[i],&ptr_array[i]);		
		2printf("第%d个元素的值为%d\t地址为:%p\n",i+1,*(ptr_array + i),ptr_array + i);
		3printf("第%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;
		}
			
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值