-3
#include <stdio.h>
#include <stdlib.h>
#define QUEUESIZE 30
int qfull(int *r)
{
if(*r == QUEUESIZE-1)
return 1;
else
return 0;
}
int qempty(int *f,int *r)
{
if(*f > *r)
return 1;
else
return 0;
}
void enqueue(int item,int q[], int *r)
{
if(qfull(r))
{
printf("Cannot Insert. Queue full.\n");
return;
}
(*r)++;
q[*r] = item;
}
void dequeue(int q[], int *r, int *f)
{
if(qempty(f,r))
{
printf("The queue is empty\n");
return;
}
int item_deleted = q[*f];
(*f)++;
if(*f > *r)
{
*f = 0;
*r = -1;
}
}
void display(int q[], int *f, int *r)
{
if(qempty(f,r))
{
printf("Nothing to display.\n");
return;
}
for(int i=*f; i<=(*r); i++)
{
printf("%d\n",q[i]);
}
}
int main()
{
int f = 0;
int r = -1;
int q[QUEUESIZE];
int item,choice;
while(1)
{
printf("Enter a choice: \n");
printf("1. Enqueue\n");
printf("2. Dequeue\n");
printf("3. Display\n");
printf("4. Exit\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("Enter an item: \n");
scanf("%d",&item);
enqueue(item,q,&r);
break;
case 2:
dequeue(q,&r,&f);
break;
case 3:
display(q,&f,&r);
break;
default: exit(0);
}
}
}
이것은 내 코드입니다. 주 프로그램에서 대기열 기능을 호출 할 때 & r 대신 r을 사용하면 warning이 표시됩니다.포인터 형식 인수를 둘 다 사용하는 경우 함수를 호출 할 때 어떤 장소와 장소에서 필요하지 않은 이유는 무엇입니까?
enquue 정의에서 qfull() 함수를 호출하는 동안 & r을 취하면이 값은 warning이됩니다.
이유를 알고 싶습니다.
더 적절하게 대답 해 주시겠습니까? –
두 인수 모두 int에 대한 포인터를 포함합니다. 내 질문을주의 깊게 읽으십시오. –
@AshwaniJha : 첫 번째 경우에 'r'을 전달합니다.이 'int'는 두 번째로'r'을'int *'로 전달합니다. Plaase 내 업데이트 된 답변을 참조하십시오. – alk