指针数组处理字符串排序,运行不出来

在主函数中输入5个字符串,定义指针数组指向这5个字符串,编写函数对字符串降序排序,在主函数中输出排序后的字符串。
以下是我的代码,怎么改,谢谢

img

你光定义了指针,但是没有分配空间
在char *p[5];
下面加上
for (i = 0; i < 5; i++)
p[i] = (char *)malloc(sizeof(char) * 100);


#include <iostream>
#include <string>
using namespace std;

void fun(string* p, int n)
{
    string k;
    for (int i = 0; i < n; i++)
    {
        cout << endl;
        for (int j = i + 1; j < n; j++)
        {
            if (p[i].length()<p[j].length())
            {
                k = p[i];
                p[i] = p[j];
                p[j] = k;
            }
        }
        cout<<p[i];
    }
}
int main()
{
    string p[5] ;
    for (int i = 0; i < 5; i++)
    {
        cin>>p[i] ;
    }
    fun(p,5);
    return 0;
}