c 的 displayArray 函数

displayArray Function For c

我是 c 编程的新手,现在正在研究数组。我看到与 java 不同,您不能使用 Arrays.toString() 方法自动打印它们。我想写一个简单的函数来打印数组。

在程序中,它询问我们数组的大小,当我们写入它时,它询问每个元素的值是多少,然后程序调用 displayArray() 函数将数组打印在单个行。

例如:

Hello. What will be the size of the new array?

3

Enter the 1. element

7

Enter the 2. element

5

Enter the 3. element

1

结果应该是 "Your array is: 7 5 1" 但我得到的不是 "Your array is: 3 6356728 2"。你能帮忙吗?

#include <stdio.h>

void displayArray();

int main()
{
    int size;
    printf("Hello. What will be the size of the new array?\n");
    scanf("%d", &size);

    int myarray[size];

    for (int i = 0; i < size; i++)
    {
        printf("Enter the %d. element\n" , (i + 1));
        scanf("%d", &myarray[i]);
    }

    displayArray(myarray[size], size);

    return 0;
}

void displayArray(int myarray[], int size)
{
    printf("Your array is: ");
    for (int i = 0; i < size; i++)
    {
         printf("%d ", myarray[i]);
    }
    return;
}

你在函数调用中遇到了问题(你的编译器应该警告过你,稍后阅读脚注

   displayArray(myarray[size], size);

应该是

   displayArray(myarray, size);

因为,

  1. 形式参数和实际参数之间的类型不匹配:你的函数需要一个数组(指向数组第一个元素的指针,准确地说),不是数组的元素。
  2. undefined behavior. 对于定义为 int myarray[size] 的数组,访问像 myarray[size] 这样的元素是差一的,因为 C 数组是基于 0 的索引。

脚注:

如果您尝试编译 您的 代码,编译器应该会抱怨不匹配。它可能发生

  • 您没有调高编译器警告级别(这是您的错误)

  • 或者,您选择忽略警告(这是您身边的 "offense")

这是初学者常犯的错误。 在调用传递数组的函数时,只需指定要传递的数组名称即可。