#include<stdio.h>
void main()//this is the way that we pragram in c
{
int arr[][]={{1,2},{1,2},{1,3}};//in class it wasnt required to initialize both
}
错误:
错误1错误C2087:&#39; arr&#39; :缺少下标
错误2错误C2078:初始化程序太多了 3 IntelliSense:数组可能没有此类元素
我是初学者,我在课堂上看到教授做了同样的事情。 我也问过我的导师,他告诉我应该提出这个错误。
有人可以请我到哪里,问题是什么?
答案 0 :(得分:3)
你错过了这种类型;必须指定除第一维之外的所有维度;并且您在聚合初始值设定项之间缺少逗号。工作示例:
print(sample.iloc[:,0].argmax())
答案 1 :(得分:1)
当你有这样的宣言时
int arr[][]={{1,2},{1,2},{1,3}};
然后编译器可以确定最左边维度的元素数量。有三个初始值设定项,因此最左侧的维度等于3.但编译器无法确定最右侧维度中的元素数量,因为所有这些声明都是有效的
int arr[][2]={{1,2},{1,2},{1,3}};
int arr[][20]={{1,2},{1,2},{1,3}};
int arr[][200]={{1,2},{1,2},{1,3}};
因此,您需要明确指定数组最右侧维度中的元素数量。我猜你的意思是以下数组声明
int arr[][2]={{1,2},{1,2},{1,3}};
相当于
int arr[3][2]={{1,2},{1,2},{1,3}};
虽然MS VS允许声明主要像
void main()
然而,根据C标准,没有参数的函数main应声明为
int main( void )
即使没有重新运行声明。
答案 2 :(得分:0)
您应该在数组声明中添加类型 - 例如int arr [] []。 如果您不想指定列和行的大小,则必须动态执行。例如这样:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int r = 3, c = 4, i, j, count;
int **arr = (int **)malloc(r * sizeof(int *));
for (i=0; i<r; i++)
arr[i] = (int *)malloc(c * sizeof(int));
// Note that arr[i][j] is same as *(*(arr+i)+j)
count = 0;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
arr[i][j] = ++count; // OR *(*(arr+i)+j) = ++count
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("%d ", arr[i][j]);
/* Code for further processing and free the
dynamically allocated memory */
return 0;
}