c++关于指向指针的指针的问

c++关于指向指针的指针的入门问题
/*将4个字符串”Asia”,”America”,”Europe”,”Africa”
按由小到大的顺序输出。要求用指向指针的指针完成。*/
#include
#include
using namespace std;
void change(const char* str1,const char* str2) {
    char temp = *str1;
    str1 = str2;
    str2 = &temp;
}
int main() {
    const char** p;
    const char*name[] = {"Asia", "America", "Europe", "Africa"};
    for (int i = 0; i < 4; i++) {
        cout << name[i] << "  ";
    }
    cout << '\n'<<"这四个字符串按从小到大排序为" << endl;
    p = name;
    for (int i = 0; i < 3; i++) {
        if (strcmp(*(p+i), *(p+i+1))>0){
            change (*(p+i),*(p+i+1));
        }
    }
    for (int i = 0; i < 4; i++) {
        cout << *(p + i) << "  ";
    }
    return 0;
}
运行后输出的字符顺序仍旧没有排序好,还是原来的顺序
检查了p指针,没有发现问题,不知道具体问题出在哪里了
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
void change(const char* str1,const char* str2) {
    char temp[1000];
    strcpy(temp, str1);
    strcpy(str1,str2);
    strcpy(str2,temp);
}