Confused returning references
<p>I have these two functions</p>

<pre><code>int FEL::enqueue(Event&amp; new_event){
     getting a reference of an event and add it to an Event array, defined as "Event *event_list"
}

Event FEL::dequeue(){
    Event old_root = event_list[0];
    event_list[0] = event_list[--event_index];
    resort_heap(0);
    return old_root;
}
</code></pre>

<p>It works great but I want to modify this for a better performance in dequeue function.
Since dequeue function returns Event, I figured it might be better if I just return a reference of the event instead of the whole event structure.</p>

<p>How do I change the return type of the dequeue function to return a reference of an event? 
I think I can do something like this to return a pointer but how do I return a reference (&amp;) of the event? </p>

<pre><code>Event* FEL::dequeue(){
    Event *old_root = &amp;event_list[0];
    event_list[0] = event_list[--event_index];
    resort_heap(0);
    return old_root;
}
</code></pre>
