はラインを考えてみましょう:
#include <stdio.h>
#include <malloc.h>
//find sum using pointers
int find_sum(int *a,int n) {
int sum=0;
int i;
for (i=0; i<n; i++){
sum=sum + *(a+i);
}
printf("sum= %i",sum);
}
int main(){
int n;
printf("Enter length of array: ");
scanf("%i",&n);
int *a=(int *)malloc(n*sizeof(int));
int i;
for (i=0; i<n; i++){
printf("Enter %i numbers",n);
int b=*(a+i);//used to store the value at that index.
scanf("%i",&b);
}
find_sum(a,n);
return 0;
}
出力があることが判明しますこの時点で不明)。
あなたは、ユーザーが入力したものとそのローカルint
を置き換える:
scanf("%i",&b);
しかし、あなたは戻っていないと
a
を更新しません。
私はお勧めかもしれません:
int b;//used to store the value at that index.
scanf("%i",&b);
*(a+i) = b;
例えば
int main() {
int n;
printf("Enter length of array: ");
scanf("%i",&n);
int *a=(int *)malloc(n*sizeof(int));
int i;
for (i=0; i<n; i++) {
printf("Enter number %i: ",n);
int b;
scanf("%i", &b);
*(a+i) = b;
}
find_sum(a, n);
free(a); // if you malloc, don't forget to `free`
return 0;
}
それとも、あなたは、あなただけの配列を使用することができます(メモリエラーを導入するように簡単です)malloc
とfree
に対処しない場合: `
int main() {
int n;
printf("Enter length of array: ");
scanf("%i", &n);
int a[n];
int i;
for (i=0; i<n; i++) {
printf("Enter number %i: ", n);
scanf("%i", &a[i]);
}
find_sum(a, n);
return 0;
}
出典
2016-05-28 06:25:13
Rob
を...かscanf( "%i"、a + i); ' – alk
ありがとうございます。それは私の問題をかなりうまく解決しました。 – user2896873