c - c 的 displayArray 函数

标签 c arrays function function-calls

我是 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

结果应该是“你的数组是:7 5 1”,但我得到的不是“你的数组是: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-基于索引。

脚注:

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

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

  • 或者,您选择忽略警告(这对您而言是一种“冒犯”)

关于c - c 的 displayArray 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034423/

相关文章:

javascript - 将 JavaScript JSON 对象与匹配的参数合并

C - 压缩字符的函数

Java - 位级字节数组算术?

c - 从编译器到汇编器

c - 使用按位运算符乘以 9

c - 在 C 程序上运行 perl 脚本时,我得到 GLOB(0x1a6a8830) 作为我的输出

c++ - 用于计算色差 (delta E) 和色彩空间转换的 C/C++ 库

r - 在R中使用可变数量的参数创建函数,

python - 像普通 python 函数一样调用 scipy.stats 概率分布

matlab - 如何在匿名函数中使用条件