c - 将数组传递给函数

标签 c arrays

对此重新发布表示歉意,因为我不知道如何表达我的问题,因为这是我第一次使用堆栈溢出。我希望有人能帮助我完成这次学习测验。

我对这个程序进行了研究,但我不知道它是否与 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/

相关文章:

python - PyThreadState_GET() 从 PyImport_GetModuleDict() 中返回 NULL

c - 多个 char* 比较的段错误

javascript - 优雅地同时计算数字数组的最小值和最大值

java - Java 数组上线程 "main"java.lang.NullPointerException 中的异常

c++ - C++是否支持抽象数组长度

c - argc 和 argv 未运行

c - C语言中#pragma和_Pragma()的区别

c - 功能查询

javascript - 从两个数组中提取非重复项 JavaScript

arrays - 在go错误中使用 slice 和数组