数组名vs指针,作为函数参数的用法比较(第一段程序有个bug)

前面程序已经展示过,数组名作为函数参数时,作用和指向数组首元素的指针一样

 

/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年7月16日
*版本号:v1.0
*
*问题描:;数组名vs数组首元素地址vs实际参数、形式参数的传递
*输入描述:;
*程序输出:
*/

#include <stdio.h>
void bubblesort(int *p,int n);
int main()
{
    int i;
    int d[10]={9,8,7,6,5,4,3,2,1,0};
    bubblesort(d,10);//数组名==指针==首元素地址
    for(i=0;i<10;i++)
    {
        printf("%d ",d[i]);
    }
    return 0;
}

void bubblesort(int *p,int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
    {
        for(i=0;j<n-1-i;j++)
        {
            if(*(p+j)>*(p+j+1))
               {
                   t=*(p+j);
                   *(p+j)=*(p+j+1);
                   *(p+j+1)=t;
               }
        }
    }
    return;
}

上面的程序bubblesort函数的第二个for循环,变量名错误(应该为j),否则一致陷入死循环!!!!程序居然还能通过编译!!

正确的程序如下,调用冒泡函数bubblesort对数组排序后输出:

/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年7月16日
*版本号:v1.0
*
*问题描:;数组名vs数组首元素地址vs实际参数、形式参数的传递
*输入描述:;
*程序输出:
*/

#include <stdio.h>
void bubblesort(int *p,int n);
int main()
{
    int i;
    int d[10]={9,8,7,6,5,4,3,2,1,0};
    bubblesort(d,10);//数组名==指针==首元素地址
    for(i=0;i<10;i++)
    {
        printf("%d ",d[i]);
    }
    return 0;
}

void bubblesort(int *p,int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)//上个程序此处定义变量错误(i=0)使得程序陷入死循环,编译无问题!
        {
            if(*(p+j)>*(p+j+1))
               {
                   t=*(p+j);
                   *(p+j)=*(p+j+1);
                   *(p+j+1)=t;
               }
        }
    }
    return;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值