2016-10-29 7 views
0

私はキュー型の変数を初期化したい。しかし、私は少し問題に走っています。警告は、intに代入されている整数変換への互換性のないポインタを示します。これは何を意味するのでしょうか?メンバとして整数配列を初期化する

#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

アレイのサイズMAXである場合、には要素が存在しませんMAXのインデックスで、0からMAX-1までの範囲です。それ以外にも、テーブルは整数の配列なので、暗黙的にポインタ(テーブルは配列なのでポインタ)を整数点に割り当てることはできません –

+0

@ZachPあなたは何を意味するのかよくわかりません... – xxFlashxx

+1

Alexですあなたが何をしようとしているのか明確ではありません。警告のある行は、配列が整数用であるが、キューを配置しようとしているためです。 MAXは4であり、配列の有効なインデックスは4ではなく0,1,2および3であるため、c.array [X]には整数のみを指定でき、Xは0からMAX-1まででなければなりません。 –

答えて

1

問題が配列[MAX]はMAX-1にインデックス0の値の最大数が含まれており、MAXは非常に最後のインデックスが配列[MAXでない位置が存在しない(@Zach Pも説明しようとしているもの)であります-1]。

第二テーブルあなたがint変数(配列[MAX-1] int型のものである)へのポインタを割り当てる傾けるように配列へのポインタである

関連する問題