C言語、ポインタについて。
C言語初心者です。"やさしいC"などの入門書を呼んでいて「ポインタ」につまづきました。
別書を買ったり、サイトを見たりしたのですが、理解できませんでした。
"やさしいC"からの引用なのですが、
正:
#include <stdio.h>
int add(int *x1,int *x2,int a);
int main (void){
int n1,n2,a,ans;
printf("2科目分の点数を入力してください。\n");
scanf("%d",&n1);
scanf("%d",&n2);
printf("加算する点数を入力して下さい。\n");
scanf("%d",&a);
ans = add(&n1,&n2,a);
printf("%d点加算しましたので\n",a);
printf("科目1は%d点となりました。\n",n1);
printf("科目2は%d点となりました。\n",n2);
}
int add(int *x1, int *x2,int a){
*x1+=a;
*x2+=a;
}
誤:
#include <stdio.h>
int add(int x1,int x2,int a);
int main (void){
int n1,n2,a,ans;
printf("2科目分の点数を入力してください。\n");
scanf("%d",&n1);
scanf("%d",&n2);
printf("加算する点数を入力して下さい。\n");
scanf("%d",&a);
ans = add(n1,n2,a);
printf("%d点加算しましたので\n",a);
printf("科目1は%d点となりました。\n",n1);
printf("科目2は%d点となりました。\n",n2);
}
int add(int x1, int x2,int a){
x1+=a;
x2+=a;
}
この2つの違いはなんでしょうか。
アドレスか、そうでないか、という違いはわかりますが、なぜ"誤"のコードだと正しく処理されないのかがわかりません。
教えてください、お願いします。
(「やさしいC」の回答より引用)