鱼C论坛

 找回密码
 立即注册
查看: 2339|回复: 0

[技术交流] 每天学一会 指针

[复制链接]
发表于 2018-4-30 20:50:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 21:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表