对此重新发布表示歉意,因为我不知道如何表达我的问题,因为这是我第一次使用堆栈溢出。我希望有人能帮助我完成这次学习测验。
我对这个程序进行了研究,但我不知道它是否与 arraySize 的测验问题有关。
问题如下: 我们将数组 ai 传递给函数 fillArray。到底传递给函数的是什么?答案是单个内存地址,而不是 10 个整数!这就是为什么我们可以使用该函数将 10 个数字填充到数组 ai 中。 完成上述函数 fillArray,以便它从用户读取 arraySize 个整数,并用这些数字填充数组。 编写一个驱动程序,用不同大小的整数数组来测试该函数。 注意函数fillArray中的形参int array[]可以改为int *array。通过修改和测试您的代码来验证这一点。
我的代码如下:
#include <stdio.h>
#define MAX 10
int fillArray(int array[], int arraySize);
void print_intaray(int array[], int arraySize);
main()
{
int ai, exam_scores[MAX];
printf("***List of Array***\n\n");
ai = fillArray(exam_scores, MAX);
print_intaray(exam_scores, ai);
}
int fillArray(int array[], int arraySize)
{
int ai, count = 0;
printf("Type array, EOF to quit\n");
while ((count < arraySize) && (scanf("%d", &ai) !=EOF))
{
array[count] = ai;
count++;
}
return count;
}
void print_intaray(int array [], int arraySize)
{
int i;
printf("\n***Your Arrary***\n\n");
for (i = 0; i<arraySize; i++)
printf("%d\n", array[i]);
}
我是编程新手,我希望我的问题能够以某种方式得到解决。
感谢您的观看:)
最佳答案
假设问题是“为什么函数参数中的 int array[]
和 int *array
是等价的”:
我不是一个 C 专家,但据我所知,数组(在 C 中)很大程度上只是您附加特定偏移量的指针。告诉 C 您期望一个 int myarray[]
与期望一个指向整数的指针 (int *array
) 几乎相同。如果增加指针,则可以访问数组中的下一个元素。这也称为指针算术。
C 编译器在后台将诸如 foo[3]
之类的数组语法转换为诸如 *(*foo+3)
之类的语法,但您也可以通过以下方式自行执行此操作:只是处理指针。
关于c - 将数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222141/