Casetrous 2022-06-10 00:21 采纳率: 100%
浏览 20
已结题

请问一下 斜杠掉的部分为什么有问题啊(语言-c++)

void maopao(int* p)
{
    //cout << *p<<*(++p);//为什么是反过来的????cout从右往左读取
    for (int i = 9; i >0; i--/*int i=0;i<9;i++*/)
    {
        for (int j = 0; j <i; j++/*int j=0;j<9-i;j++*/)
        {
            //int temp = 0;//想问一下 这一段为什么不行啊
            //if (*p > *(++p))
            //{
            //    temp = *(++p);
            //    *(++p) = *p;
            //    *p = temp;
            //}

            if (p[j] > p[j+1])
            {
                int temp = p[j];
                p[j] = p[j + 1];
                p[j + 1] = temp;
            }
        }
    }
}

int main()
{
    int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
    maopao(arr);
    for (int i = 0; i < 10; i++)
    {
        cout << arr[i];
    }
}

冒泡排序 把数组从小到大排序的程序 但指针的有点搞不懂
想请问一下 void maopao中间//斜杠掉的部分为什么不行啊 能不能解引用之后直接比较数值啊
还有个问题 传递到void maopao中的不是指针吗 为什么p[i]跟数组是一样的呀

  • 写回答

1条回答 默认 最新

  • WaitIKnowYou 2022-06-10 00:50
    关注

    你每执行一次++p 指针都会后移一位
    你的代码都不是需要交换的那两个数字了,
    你可以定义一个新的指针变量q存++p的地址,用作和p交换 ,当然,你需要注意,你执行++p之后,原来的p也会后移一位
    所以,你最好写成p+1与p交换
    综上所述,你把你代码中的++p写成p+1就好了
    数组名就是数组首地址,既然是地址就是指针类型,基础没学明白呀
    int a[10], *p=a; 那a[i]与p[i]有啥区别呢?
    a[i+1]不就是 *(p+1)嘛

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月10日

悬赏问题

  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历