每天学一会 指针
本帖最后由 理想小青年 于 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,arrays;
q1 = array;//等于数组第一个元素变量地址array;
//q2 = arrays;//有办法让q2指针等于arrays吗?
q2 = &arrays;
printf("Please enter numbers:\n");
for(i = 0;i<M;i++)
{
scanf("%d",&array);
}
reversion(q1,q2);
q2 = arrays;//把指针调回来!q2 = arrays 而不是 arrays
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数组元素赋值给arrays;
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");
}
页:
[1]