字符串交换适用于char**但不适用于char*

Gho*_*ing 4 c string swap pointers function

在这个程序中,我已经交换了前两个名字

#include<stdio.h>
void swap(char **,char **);
main()
{
 char *name[4]={"amol", "robin", "shanu" };
 swap(&name[0],&name[2]);
 printf("%s %s",name[0],name[2]);
}
void swap(char **x,char **y)
 {
 char *temp;
 temp=*x;
 *x=*y;
 *y=temp;
 }
Run Code Online (Sandbox Code Playgroud)

这个程序运行完美,但是当我使用function swap(char *,char *)它时,它不会交换地址为什么?为什么我必须使用指针指针?

Roh*_*han 6

我假设你理解交换整数你会有类似的功能 swap(int *, int *)

同样,当你想要交换字符串时char *.你需要像这样的功能swap(char **, char **).

在这种情况下,你可以使用它们的指针并交换它们的内容(否则一旦函数返回就不会交换值).对于整数内容,指针是int *并且在字符串内容的情况下是char *指向它的指针char **.