ポインタを使用して2つのint配列の合計を計算するCでプログラムを作成しようとしています。ここで は私が何をしたいの例です。Cでポインタを使用する2つの配列の合計
int a[] = {1,2,3,4}
int b[] = {1,2,3,4,5,6}
int c[] = sumArrays(a,b,4,6)
Output : c = {2,4,6,8,5,6}
問題は、それが示して、私の出力が異なっている:
Output : c = {2,4,6,8}
任意のアイデア私が間違って何をしたし、それを修正する方法?ここ は私のコードである:cはintへのポインタであるため
#include <stdio.h>
#include <stdlib.h>
int* sumArrays(int *arr1, int *arr2, int dim1,int dim2)
{
int *ret = NULL;
if(dim1<dim2) ret = (int*) malloc(dim2*sizeof(int));
else ret = (int*) malloc(dim1*sizeof(int));
if(ret)
{
if(dim1<dim2) {
int i = 0;
for (i = 0;i < dim1;i++) {
ret[i] = arr1[i] + arr2[i];
}
for (i = dim1; i < dim2;i++) {
ret[i]=arr2[i];
}
} else {
int i = 0;
for (i = 0;i < dim2;i++) {
ret[i] = arr1[i] + arr2[i];
}
for (i = dim2; i < dim1;i++) {
ret[i]=arr1[i];
}
}
}
return ret;
}
int main()
{
int *a[] = {1,2,3,4};
int *b[] = {1,2,3,4,5,6};
int *c = sumArrays(a,b,4,6);
printf("c = ");
int i;
for (i = 0; i < sizeof(c); i++) {
printf("%d,",c[i]);
}
}
C++にフラグを立ててはいけません。そうでなければ 'std :: vector'を使わなければなりません。 – Jarod42
また、 'int * a []'を 'int a []'に変更する必要があります。 – Shibli
別の注意として、あなたは 'c = {2,4,6,8、}'を得るべきであり、 'c = {2,4,6,8}'ではありません。 – anishsane