2012-05-09 2 views
0

Я хочу создать очередь с динамическим массивом, проблема в том, когда я тестирую значение q.rear в int main() (для вставки данных позже) это уже не -1. Какую часть я делал неправильно?очередь не возвращает заднее значение должным образом?

вот кусок кода:

#include <stdio.h> 
#include <conio2.h> 
#include <stdlib.h> 

typedef struct{ 
    int *data; 
    int front,rear,max; 
    }tqueue; 
tqueue create(int size) 
{ 
    tqueue q; 
    q.data=(int *)malloc(size*sizeof(int));   
    q.front=0; 
    q.rear=-1; 
    q.max=size; 
    return q; 
} 
int main() 
{ 
    tqueue q; 
    int size=4; 
    create(size); 
    printf("\n%d",q.rear); 
    getch(); 
    return 0; 
} 
+0

моя ошибка, спасибо всем :) – mollyeah

ответ

0

Вы не назначили результат от create() до q. Следующие вызовы create()и сбрасывает результат, оставляя q в исходном состоянии:

create(size); 

Чтобы исправить, заменить эту строку с:

q = create(size); 
0

У вас есть два различных tqueue с, так называемый q. Один (тот, который вы создаете в create), вы инициализируете и один (тот, который вы создаете в main), вы этого не делаете.

0

Вы забыли присвоить возвращаемое значение:

q = create(size); 
Смежные вопросы