cin和cout可以使用引用&吗

答案中,cin和cout用scanf和printf函数,而scanf可以scanf("%d",&a,&b)表示, printf 函数一样,但是cin和cout不行,想问一下为什么?


#include<iostream>
#define M 3
#define N 6
#define price 3
using namespace std;

typedef struct
{
    int CarNumber[M], cartime[M];
    int top;
}SqStack;

void InitStack(SqStack*& e)
{
    e = (SqStack*)malloc(sizeof(SqStack));//malloc函数构造指针
    e->top = -1;
}

bool StackEmpty(SqStack* e)
{
    return (e->top == -1);
}

bool StackFull(SqStack* e)
{
    return(e->top == 9);
}

bool Push(SqStack*& e, int c1,int c2)
{
    if (e->top == 9)return false;
    e->top++;
    e->CarNumber[e->top] = c1;
    e->cartime[e->top] = c2;
    return true;
}

bool Pop(SqStack*& e, int&c1,int&c2)
{
    if (e->top == -1)return false;
    c1 = e->CarNumber[e->top];
    c2 = e->cartime[e->top];
    e->top--; return true;
}

void DisStack(SqStack* e)
{
    for (int i = 0; i < 9; i++)
    {
        cout << e->CarNumber[e->top] << e->cartime[e->top]<<endl;
        e->top--;
    }
}

typedef struct
{
    int CarNumber[N];
    int front, rear;
}SqQueue;

//采用环形队列
void InitQueue(SqQueue*& q)
{
    q = (SqQueue*)malloc(sizeof(SqQueue));
    q->front = q->rear = 0;
}

bool QueueEmpty(SqQueue* q)
{
    return(q->front == q->rear);
}

bool QueueFull(SqQueue* q)
{
    return(q->rear == N - 1);
}

bool enQueue(SqQueue*& q, int e)
{
    if ((q->rear+1)%N==q->front)return false;
    q->rear = (q->rear + 1) % N;
    q->CarNumber[q->rear] = e; return  true;
}

bool deQueue(SqQueue*& q, int& e)
{
    if (q->front == q->rear)return false;
    q->front = (q->front + 1) % N;
    e = q->CarNumber[q->front]; return true;
}

//显示队中元素
void DisQueue(SqQueue*& q)
{
    int i = (q->front + 1) % N;
    cout << q->CarNumber[i];
    while ((q->rear - i + N) % N > 0)
    {
        i = (i + 1) % N;
        cout << q->CarNumber[i];
    }cout << endl;
}

int main()
{
    SqStack* S, * s;
    SqQueue* t;

    InitStack(S); InitStack(s);
    InitQueue(t);

     int number, time ;
    int e1, e2, order, i, j;

    do 
    {
        static int number;
        cout << "输入指令:1到达,2离开,3停车场,4候车场,0退出" << endl;
        cin >> order;
        switch (order)
        {
        case 1:
            cout << "请输入车号和到达时间"; cin >> number >> time;
            if (!StackFull(S))
            {
                Push(S, number, time);
                cout << "停车场位置\n" << S->top+1<<endl;
            }
            else if (!QueueFull(t))
            {
                enQueue(t, number);
                cout << "候车场位置\n" << t->rear;
            }
            else cout << "候车场已满,不能停车"; break;
        case 2:
            cout << "请输入车号和离开时间"; cin >>number >> time;//这里的time是即时时间
            for ( i = 0; i <= S->top && S->CarNumber[i] != number; i++)
            {
                if (i > S->top)cout << "未找到该编号的车" << endl;
                else {
                    for (j = i; j <= S->top; j++)
                    {
                        Pop(S, e1, e2);
                        Push(s, e1, e2);
                    }Pop(S, e1, e2);
                    cout << number << "汽车需要支付的费用是" << (time - e2) * price << endl;
                    while (!StackEmpty(s))
                    {
                        Pop(s, e1, e2);
                        Push(S, e1, e2);
                    }
                    if (!QueueEmpty(t))
                    {
                        deQueue(t, e1);//出队和入栈
                        Push(S, e1, time);
                    }
                }
            }break;
        case 3:
            if (!StackEmpty(S))
            {
                cout << "停车场车辆:"; DisStack(S);
            }
            else cout << "停车场中无车";
            break;
        case 4:
            if (!QueueEmpty(t))
            {
                cout << "候车场车辆:"; DisQueue(t);
            }
            else cout << "候车场无车"; break;
        case 0:
            if (!StackEmpty(S))
            {
                cout << "停车场车辆:"; DisStack(S);
            }if (!QueueEmpty(t))
            {
                cout << "候车场车辆:"; DisQueue(t);
            }break;
        default:cout << "输入错误"; break;
        }
    } while (order!=0);
}


一个是C语言的输入输出,一个是C++的输入输出。。