一个关于二级指针和指针数组的问题


#include <iostream>
using namespace std;
int main() 
{
    void sort(int **p,int s);
    int num[5],*str[5],**p;
    int i;
    int n;
    for(i=0;i<5;i++)
    cin>>num[i];
    for(i=0;i<5;i++)
    str[i]=&num[i];
    p=str;
    sort(p,5);
    for(i=0;i<5;i++)
    cout<<(*str[i])<<endl;
    return 0;
}
void sort(int **p,int s)
{
    int i=0,j,*temp;
    for(i=0;i<s-1;i++)
    {
        for(j=0;j<=s-2;j++)
        {
            if(**(p+j+1)<**(p+j))
            {
                temp=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=temp;
            }
        }
    }
}

输入1 2 3 4 5后
依然输出 1 2 3 4 5

问题在哪?