我在C中得到错误C2440无法从int转换为int [] [2]
感谢任何帮助。
#include "stdafx.h"
#include "stdio.h"
#define MAXDATACOL 2
void EnterValues(int dataarray[][MAXDATACOL]);
int main(void)
{
int dataarray[][MAXDATACOL]=0;
int i,j;
int values;
}
void EnterValues(int dataarray[][MAXDATACOL])
{
for(;;)
{
int i, j;
printf( "enter the x and y values terminated by ctrl Z\n" );
if( scanf( "%d%d", &dataarray[i], &dataarray[j] ) == EOF )
break;
}
}
答案 0 :(得分:1)
int dataarray[][MAXDATACOL]=0;
你不能这样做是因为:
答案 1 :(得分:0)
for(;;)
{
int i,j;
printf("enter the x and y values terminated by ctrl Z\n");
if(scanf("%d%d",&dataarray[i],&dataarray[j])==EOF)
break;
}
另一个问题:你需要初始化i,j的值。此外,dataarray
是 2D数组。
答案 2 :(得分:0)
正如BlackBear所说,C阵列需要以固定大小声明。它们无法在运行时更改。 int a []之类的东西可以在函数原型中使用,因为数组的指针被传递给函数。
#define MAXDATAROW 1000
#define MAXDATACOL 2
int main(void)
{
int dataarray[MAXDATAROW][MAXDATACOL]={0};
}
是解决这个问题的一种方法。另一种方法是使用动态内存分配(malloc或realloc)。还有一种方法是使用可以动态调整大小的C ++容器(它们不会分配内存)。
答案 3 :(得分:0)
我可以看到你正在努力解决这个问题。如果我是你,我会声明一个点结构来保持x,y对。我还会声明一个大的固定大小缓冲区来保存用户输入的值。像这样:
#include <stdio.h>
#define MAX_COUNT 1000
typedef struct {
int x;
int y;
} point;
void addPoint(point points[], int *count, point item)
{
points[*count] = item;
(*count)++;
}
int main(void)
{
point points[MAX_COUNT];
point item;
int i;
int count = 0;
printf("enter the x and y values terminated by ctrl Z\n");
for(;;)
{
if (scanf("%d%d",&item.x,&item.y)==EOF)
break;
addPoint(points, &count, item);
if (count==MAX_COUNT)
{
printf("Input buffer full.\n");
break;
}
}
for (i=0; i<count; i++)
printf("x=%d, y=%d\n", points[i].x, points[i].y);
return 0;
}
答案 4 :(得分:-1)
fugy - 如果你真的认为你上面发布的代码可能实际上有工作(一旦有人在这里整理你的编译器错误),我恐怕你有很多东西需要学习。
您尚未指定数据阵列第一维的大小。即使你拥有,将值0分配给2D数组的起始地址也是没有意义的(它已经已经在堆栈的某个地方有一个固定的不可更改的地址)
main()函数不包含对 EnterValues()的调用,因此代码永远不会执行。
根据您目前的编码能力水平,根本没有定义 EnterValues()功能。它只被调用一次,并且您给出的参数与传递的变量的名称相同,因此您可以将用户输入循环放在 main()中,以便在您使用时保持代码短正在学习。
您没有为索引下标 i 和 j 设置任何值。即使你拥有,他们也不会做你想要的,因为他们都会引用第一个维度。显然,您希望将值读入 second 维度中的两个连续元素。
在用户最终按下^ Z之前,您没有规定允许的最大输入对数量,我怀疑您甚至不理解为什么这是一个问题。
我建议您在处理多维数组和动态存储分配以输入不确定大小之前,先完成更多非常简单的编码练习。这些是相对先进的技术,除非您对基础知识有更深入的了解,否则您不太可能理解此处给出的任何代码更正。