这个 C 程序假设从用户那里得到五个整数值并将它们存储在一个数组中。其次,它会要求用户提供另一个整数 n。该值将用作数组元素的乘数。接下来,它将修改数组的元素,使新值是原始值的 n 倍,其中 n 是乘数。我要使用 函数 传递第一个数组元素的地址,以及 n, 来修改值。
现在这是我想出的代码,但它只修改数组的第一个元素。
#include <stdio.h>
#define SIZE 5
void multiply(int *aPtr, int);
int main(){
int array[SIZE];
int i=0;
int m;
printf("Enter 5 integers: ");
for(i=0; i<SIZE; i++){
scanf("%d", &array[i]);
}
printf("Please enter the multiplier: ");
scanf("%d", &m);
multiply(&array[0], m);
for(i=0; i<SIZE; i++){
printf("%d ", array[i]);
}
return 0;
}
void multiply(int *aPtr, int mul){
for(i=0; i<SIZE; i++)
*aPtr = *(aPtr+i) * mul;
}
最佳答案
乘法后,您将所有值存储到同一位置,即 *ptr
。改变
*aPtr = *(aPtr+i) * mul;
到
*(aPtr+i) = *(aPtr+i) * mul;
关于c - 在 C 中使用指针模拟按引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27540864/