c - 为什么这个交换功能不起作用?(在 C 中交换字符串)
问题描述
我正在尝试交换字符串数组中的 2 个条目,但我的swap
函数在调用时不会交换。
swap(char*, char*);
int main() {
char *ptsr[2] = { "x", "y" };
swap(ptsr[0], ptsr[1]);
}
swap(char *t1, char *t2) {
char *t;
t = t1;
t1 = t2;
t2 = t;
}
有人可以识别并解释我的错误吗?
解决方案
问题中的函数仅交换其参数的值。参数是数组元素的副本,因此该swap
函数无效。
要交换数组中的指针,您必须传递它们的地址并更改交换函数的原型:
#include <stdio.h>
void swap(char **t1, char **t2) {
char *t;
t = *t1;
*t1 = *t2;
*t2 = t;
}
int main() {
char *ptsr[2] = { "x", "y" };
swap(&ptsr[0], &ptsr[1]);
printf("pstr: { \"%s\", \"%s\" }\n", pstr[0], pstr[1]);
return 0;
}
推荐阅读
- javascript - nativeElement select 等待绑定数据
- php - session_start() 在特定脚本上静默失败
- python - 如何在 AWS Lambda 中直接导入 Google 模块?
- c++ - 在 TCP 套接字上执行 async_read_some() 时出现 EOF...但是连接仍然存在
- ios - Flutter ios - 在模拟器上运行的应用程序无法部署到 iphone - 找不到 -lFirebaseCore 的库
- java - 我正在使用 Files.move 函数移动文件,但它不继承父文件夹权限
- javascript - 如何在本机反应中切换抽屉导航器?
- go - 如何在 Go on Google Cloud Functions 上使用子包?
- powershell - 无法将“System.String”转换为类型“WebServiceProxy.ExternalID”
- asp.net - ASP.NET CORE 2.1 FromRoute 和 FromBody 模型绑定