Я пытался вырыть больше в использовании массивов и указателей в то время как я наткнулся на эту проблему:
Передача массивов в качестве параметров указатель
main.cpp:13:7: error: cannot convert 'int [2][5][10]' to 'int*'
присваивание show=ary;
Вот код:
#include <iostream>
using namespace std;
void arrayLearn(int *);
int main()
{
int ary[2][5][10];
int *show;
ary[2][4][9]=263;
ary[2][5][10]=100;
show=ary; //line 13
arrayLearn(show); //line 14
cout <<"End process"<<endl;
return 0;
}
void arrayLearn(int *arg)
{
for(int i=0;i<100;i++)
{
cout<<"Pointer position: "<<i<<" Value: "<<*(arg++)<<endl;
}
}
Если я удаляю линию и заменяю Строка 14 со следующим кодом,
arrayLearn(ary[5][10]);
тогда программа компилируется, но я не понимаю, почему я должен пройти только два измерения, а не три. Если я передаю указатель на первый элемент в массиве, то почему я не могу просто передать указатель вот так?
arrayLearn(ary);
Пожалуйста, дайте мне знать, если я пропустил некоторые важные концепции или не смог увидеть действительно простую ошибку.
См Http: // StackOverflow. ком/вопросы/29735567/с-несовместимый-указатель типа инициализация/29735593 # 29735593. Другой язык, одна и та же проблема. В любом случае ваш код выглядит как C. – juanchopanza
не рекомендуется использовать эти поддерживаемые языки массивы. даже тем более, что вы объявляете их в стеке, вы будете вызывать stackoverflows. просто используйте несколько классных классов, gee. –
См. Http://stackoverflow.com/questions/3911400/passing-2d-arrays, чтобы понять, как передавать 2D-массивы. Надеюсь, это поможет вам понять, как передавать 2D-массивы. –