我在 C 中做了一个简单的函数,它接受 1 个指向 int 的指针、1 个指向 int 的双指针和一个整数作为参数(第三个参数可能没用,因为它表示存储在第一个参数指向的空间中的整数数)。它的作用是:首先,在内存中腾出足够的空间来容纳 2 个整数,并将第二个参数设置为指向该空间。其次,将整数从第一个参数指向的空间复制到第二个参数指向的空间。第三,它将第一个参数指向的空间中的所有整数递增 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]);
}