我试图在这个问题上有一个裂缝。问题说,*“swap_nums似乎工作,但不swap_pointers。修复它。”*我是一个初学者的方式:)C中的指针(将地址传递给函数)
我相信我可以解决自己的问题,但麻烦是我有一个在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?我在这里有点困惑。有人可以向我解释这一点吗?
绝对正确。如果你想变得有趣,你也可以XOR交换它们;){if(x!= y){* x = * x^* y; * y = * x^* y; * x = * x^* y; }} –