理想小青年 发表于 2018-4-30 20:50:30

每天学一会 指针

本帖最后由 理想小青年 于 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]
查看完整版本: 每天学一会 指针