C で、int への 1 つのポインター、int への 1 つの double ポインター、および整数を引数として取る単純な関数を作成しました (3 番目の引数は、最初の引数が指す空間に格納されている整数の数を表すため、おそらく役に立たないでしょう)。 )。まず、メモリ内に 2 つの整数を保持するのに十分なスペースを作成し、そのスペースを指すように 2 番目の引数を設定します。次に、最初の引数が指すスペースから 2 番目の引数が指すスペースに整数をコピーします。3 番目に、最初の引数が指す空間内のすべての整数を 1 ずつインクリメントします。この関数が役に立たないことはわかっていますが、ソリューションの何が問題なのか知りたいです。コードは次のとおりです。
#include <stdlib.h>
#include <stdio.h>
int *x, *y;
void duplicateAndIncreaseByOne(int *arg1, int **arg2, int arg1Elements){
int ctr;
*arg2 = (int *) malloc(arg1Elements * sizeof(int));
for(ctr = 0; ctr < arg1Elements; ctr++){
**(arg2 + ctr) = *(arg1 + ctr);
*(arg1 + ctr) = *(arg1 + ctr) + 1;
}
}
int main() {
int j;
y=(int *)malloc(2*sizeof(int));
*y=10; *(y+1)=50;
duplicateAndIncreaseByOne(y, &x, 2);
printf("The pointer y contains the elements y[0] = %d and y[1] = %d\n", y[0], y[1]);
printf("The pointer x contains the elements x[0] = %d and x[1] = %d\n", x[0], x[1]);
}