我正在尝试解决这个问题。问题是,*“swap_nums 似乎有效,但 swap_pointers 无效。修复它。”* 顺便说一句,我是初学者 :)
我相信我可以自己解决问题,但问题是我在理解 C 中的一些编程概念时有些困难。这里我展示了需要编辑的给定代码。下面我将展示我到目前为止的思考过程。请注意:我想要一些提示而不是完整的解决方案。:-)
#include <stdio.h>
#include <stdlib.h>
void swap_nums(int *x, int *y);
void swap_pointers (char *x, char *y);
int main (int argc, char *argv[]){
int a = 3, b = 4;
char *s1, *s2;
swap_nums(&a, &b);
printf("a is %d\n", a);
printf("b is %d\n", b);
s1 = "I should print second";
s2 = "I should print first";
swap_pointers(s1, s2);
printf("s1 is %s\n", s1);
printf("s2 is %s\n", s2);
return EXIT_SUCCESS; }
void swap_nums(int *x, int *y){
int temp;
temp = *x;
*x = *y;
*y = temp; }
void swap_pointers (char *x, char *y){
char *temp;
temp = x;
x = y;
y = temp; }
我的思考过程:这是一个我认为可以交换整数变量 a 和 b 的程序。然后它将获取两个声明的字符串并交换它们。
主功能:
int a = 3, b = 4;
将变量 a 和 b 分别分配给 3 和 4。
char *s1, *s2;
创建一个字符指针变量(它将保存一个字符的地址)
swap_nums(&a, &b);
函数 swap_nums 正在执行。我现在就去解释我的思维过程。
void swap_nums(int *x, int *y){
所以我不太熟悉将东西传递给函数,如果我在这里错了,有人可以纠正我要说的话吗?
在我看来,我们将 a 和 b 的地址传递给函数 swap_nums。但是为什么我们有 int *x 和 int *y 呢?我在这里有点困惑。有人可以向我解释一下吗?