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」の回答より引用)
お礼
#include <stdio.h> main(){ int i, k, n, target; int a[] = {8, 6, 11, 4, 2, 7, 3}; n = 7; printf("配列のデータ:\n"); for( i=0; i<n; i++){ printf("%d ",a[i]); } printf("\n探索するデータを入力してください\n"); scanf("%d",&target); k = 0; while( a[k]!=&& k<n){ k++; } if( k<n){ printf("目的のデータは%d番目です\n",k); } else { printf("目的のデータはありませんでした\n"); } } 訂正して下さい
補足
本当に困ってるので教えて下さい