私はこの問題に亀裂を入れようとしています。質問には、*「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 を交換すると思われるプログラムです。次に、宣言された 2 つの文字列を取り、それらも交換します。
主な機能:
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 があるのでしょうか? ここで少し混乱しています。誰かが私にこれを少し説明してもらえますか?