很抱歉这次转帖,因为我不知道如何表达我的问题,因为这是我第一次使用堆栈溢出。我希望有人能帮我解决这个学习测验的问题。
我对这个程序进行了研究,但我不知道它是否与arraySize上的测验问题有关。
问题如下:我们将数组ai传递给函数fillArray。传递给函数的到底是什么?答案是单个内存地址,而不是10个整数!这就是为什么我们可以使用函数用10个数字填充数组ai。完成上面的函数fillArray,以便它从用户读取arraySize个整数,并用这些数字填充数组。编写驱动程序,对不同大小的整数数组进行函数测试。注意,函数fillArray中的形参int数组可以更改为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]);
}
我是编程新手,我希望我的问题能以某种方式得到解决。
感谢您的观看:)
发布于 2014-10-07 02:14:30
假设问题是“为什么int array[]
和int *array
在函数参数中是等价的”:
我不是一个精通C语言的专家,但AFAIK数组(在C中)很大程度上只是一个指针,你可以将某个偏移量附加到它上面。告诉C你需要一个int myarray[]
,这意味着你需要一个指向整数(int *array
)的指针。如果递增指针,则可以访问数组中的下一个元素。这也称为指针算法。
C编译器在后台将像foo[3]
这样的数组语法转换成像*(*foo+3)
这样的数组语法,但您也可以通过处理指针来自己完成这项工作。
https://stackoverflow.com/questions/26222141
复制相似问题