2016-10-29 4 views
0

Ich möchte meine a-Variable mit Queue-Typ initialisieren. Aber ich stolperte in ein bisschen Ärger. Die Warnung besagt, dass ein inkompatibler Zeiger auf eine Ganzzahlkonvertierung int zugewiesen ist. Was bedeutet das?Initialisierung Ganzzahl-Array als Mitglied

#include <stdio.h> 
#include <stdlib.h> 
#define MAX 4 

struct queue 
{ 
    int array[MAX]; 
    int front; 
    int back; 
}; 
typedef struct queue Queue; 

Queue qInit(Queue table[], int front, int back); 

int main(void) 
{ 

    Queue table[MAX]; 
    int front, back; 

    qInit(table, front, back); 

    return 0; 
} 

Queue qInit(Queue table[], int front, int back) 
{ 
    Queue c; 

    c.array[MAX]=table; // <---- getting warning right here. 
    c.front=front; 
    c.back=back; 

    return c; 
} 
+0

wenn Array ist in der Größe MAX, gibt es kein Element in Der Index von MAX reicht nur von 0 bis MAX-1. Abgesehen davon, da Tabelle ein Array von ganzen Zahlen ist, können Sie nicht implizit einen Zeiger zuweisen (Tabelle ist ein Array, also ein Zeiger) zu einem ganzzahligen Punkt –

+0

@ZachP nicht ganz sicher, was du meinst ... – xxFlashxx

+1

Alex ist es nicht klar, was Sie versuchen zu tun. Die Zeile mit der Warnung ist, weil das Array für Ganzzahlen ist, aber Sie versuchen, eine Warteschlange in es einzufügen. c.array [X] kann nur eine ganze Zahl erhalten, und X müsste von 0 bis MAX-1 sein, denn MAX ist 4, der gültige Index für das Array ist 0,1,2 und 3, nicht 4. –

Antwort

1

das Problem ist (was @Zach P auch versucht zu erklären) array [MAX] enthält MAX Anzahl der Werte mit dem Index 0 bis MAX-1 und es gibt keine Position MAX so letzten Index ist array [MAX -1].

und zweitens Tabelle ist ein Zeiger auf ein Feld, so dass Sie einen Zeiger auf einen int Variablen zuweisen Überhöhung (array [MAX-1] des Typs int ist)

Verwandte Themen