函数指针和数组问题,求大神解惑

图片说明
如图,为什么最后输出的数组没有改变,求大神解惑

你的排序函数mp调用的位置和调用的方式不对,用mp(a,c)。而且初始化数组a时,c变量不是一个常数,c要换为一个常数代替。初学者吧 0……0

写代码太粗心了,你这代码竟然能编译成功?数组申请方式不对,还有排序也有错误,mp函数调用位置应该在下面调用。你试下下面的代码:

#include <stdio.h>

int mp(int *p,int c)
{
    int i,j,temp;
    for (i=0;i<c-1;i++)
    {
        for (j=0;j<c-1;j++)
        {
            if(*(p+j)>*(p+j+1))
            {
                temp=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=temp;
            }
        }
    }
    return 0;
}

int main()
{

    int i,c;
    printf("input number:\n");
    scanf("%d",&c);
    int *a = new int[c];
    for(i=0;i<c;i++)
    {
        printf("input:");
        scanf("%d",&a[i]);
    }
    mp(a,c);
    for (i=0;i<c;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n",a[i]);
    delete a;
    return 0;
} 

谢谢楼上各位,问题解决了, temp=*(p+j);

(p+j)=(p+j+1);
(p+j)=temp; //这里的错误 改成(p+j+1)就好了