c++函数引用和指针形参对应问题

尝试把函数形参改成char*&格式但运行结果没有变化
{
    char*s;
    s = s1;
    s1 = s2;
    s2 = s;
}
int main()
{
        char c[] = "teacher";
        char d[] = "student";
        char* e = c;
        char* f = d;
        const char* i = "teacher";
        const char* j = "student";
        swap(e, f);
        cout << c << d << endl;
        swap(c, d);
        cout << c << d << endl;
        swap(i, j);
        cout << i << j << endl;
        return 0;
}


运行结果teacherstudent
                       studentteacher
                       studentteacher

char数组不能直接用=赋值。
交换的时候需要用临时变量进行拷贝

void swap(char* s1,char* s2)
{
    char tmp[100]={0};
    memcpy(tmp,s1,strlen(s1));
    memset(s1,0,strlen(s1));
    memcpy(s1,s2,strlen(s2));
    memset(s2,0,strlen(s2));
    memcpy(s2,tmp,strlen(tmp));
}

有啥问题啊?
swap(e, f);
cout << c << d << endl;
你交换的是e,f,输出的是 c和d。这时候c和d的值并没有动啊。你得输出e和f才变啊