马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 理想小青年 于 2018-4-30 20:55 编辑
这是一个数组反转的指针练习,那么自己代码如下,感觉虽然代码复杂一些、而不简洁,思路很清晰!一起学习指针的朋友们可以加深一下认识,贴出来一起分享。(思路是两个定义两个数组,有更简单的方法只是练习)#include <stdio.h>
#define M 10
void reversion(int *q1,int *q2);
void printf_io(int *q1);
void main()
{
int i,*q1,*q2,array[M],arrays[M];
q1 = array;//等于数组第一个元素变量地址array[0];
//q2 = arrays;//有办法让q2指针等于arrays[9]吗?
q2 = &arrays[9];
printf("Please enter numbers:\n");
for(i = 0;i<M;i++)
{
scanf("%d",&array[i]);
}
reversion(q1,q2);
q2 = arrays;//把指针调回来!q2 = arrays[0] 而不是 arrays[9]
printf_io(q2);
}
void reversion(int *q1,int *q2)
{
int k;
printf("Is the transformation\n");
printf("Please wait a moment\n");
for(k = 0;k<M;k++)
{
*(q2-k) = *(q1+k);//array[0]数组元素赋值给arrays[9];
printf("%d = %d\n",&*(q2-k),*(q2-k));//根据数组地址判断是否重末尾赋值
printf("%d = %d\n",&*(q1+k),*(q1+k));
}
printf("Conversion success!\n");
}
void printf_io(int *q1)
{
int j;
printf("output array reversion sort:\n");
for(j = 0;j<M;j++)
{
if(j == 9)
{
printf("%d",*(q1+j));//输出最后一个数组元素去掉-->
}
else
{
printf("%d-->",*(q1+j));
}
}
printf("\n");
}
|