为什么在vs2019中用冒泡法排序第一次交换位置后tmp被赋值后 第二次tmp还是上一个值?

int len = sizeof(namep) / sizeof(char*);
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if(strcmp(namep[j], namep[j+1])>0)
{
char* tmp=NULL;
tmp = namep[j];
namep[j] = namep[j + i];
namep[j + 1] = tmp;

        }
    }

}

```

```第一个和第二个交换完 剩下的都是第二的值

char* tmp=NULL;
tmp = namep[j];
namep[j] = namep[j + i];
namep[j + 1] = tmp;
->
char tmp[1000];
strcpy_s(tmp , 1000, namep[j]);
strcpy_s(namep[j] , 1000, namep[j + i]);
strcpy_s(namep[j + 1] , 1000, tmp);