我是 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);
因为,
- 形式参数和实际参数之间的类型不匹配:您的函数需要一个数组(准确地说是指向数组第一个元素的指针),而不是一个元素数组的。
- undefined behavior . 对于定义为
int myarray[size]
的数组,访问像myarray[size]
这样的元素是差一的,因为 C 数组是 0-基于索引。
脚注:
如果您尝试编译您的 代码,编译器应该会提示不匹配。它也可能发生
您没有调高编译器警告级别(这是您的错误)
或者,您选择忽略警告(这对您而言是一种“冒犯”)
关于c - c 的 displayArray 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034423/