我試圖在這個問題上有一個裂縫。問題說,*「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; }} –