Здесь я пытаюсь создать матрицу, назначая массивы для ссылки на указатель:
bb_ANN(int num_Weights, int num_Layers, int num_Nodes, double * inputs){
//create an array that will hold pointers
struct ANN_Node *layer[num_Layers];
//create an array of nodes
struct ANN_Node **arr = malloc(sizeof(struct ANN_Node **) *num_Layers);
//initialize Nodes
for(int i=0;i<num_Layers;i++)
{
// layer heads
layer[i] = ANN_Init_Node(num_Weights);
for(int j=0; j<num_Nodes;j++)
//push nodes into each layer head
{ push_ANN_Node(&layer[i],num_Weights); }
// converting each list into an array, then each embedding into arr[]
arr[i] = arrayOfList(layer[i]);
}
printf("f(x):%f ", arr[0][1].weights[0]);
////////////
Это определение arrayOfList:
struct ANN_Node *arrayOfList(struct ANN_Node *listP){
int i = lengthOfList(listP) ; //make i the length of the list
struct ANN_Node **ptr= malloc(sizeof(struct ANN_Node **) *i);
for(i=0;listP != NULL;listP=listP->next,i++)
{ ptr[i] = listP; }
return ptr;
}
Теперь то, что я пытаюсь сделать, это создать некую матрицу 'ANN_Nodes':
-->[ 0 0 0 ]
-->[ 0 0 0 ]
-->[ 0 0 0 ]
, в результате чего я создаю цикл, который проходит через каждый слой и вставляет массив, который будет возвращать моя функция arrayOfList.
Теперь есть такая вещь:
arr[0][0].weights[0]
и это нормально.
Так что это arr[1][0].weights[0]
и это arr[2][0].weights[0]
и так далее.
Но мне не удалось создать нечто двумерное: arr[0][1].weights[0]
это сбой и ошибка.
Имеет ли смысл то, что я пытаюсь сделать, возможно ли это, и как я могу на самом деле достичь структуры двумерного массива, чтобы я мог выполнять свои задачи?
PS. Я уже проверил многомерные массивы, но я думаю, что мой случай немного отличается от большинства примеров и учебных пособий, которые я нахожу в Интернете, я пытаюсь сортировать возвращаемый массив и массив массивов, если это имеет смысл .. .