How does a wallet use unconfirmed outputs as inputs after unconfirmed transactions? I have 10 btc on address A.

Using raw transaction, I send 5btc from A to B and set the change address as A itself. Now because the transaction from A to B is not confirmed I can't spend the remaining 5 btc.

But I saw that the QT wallet can do this. Ex:

I have 10 btc on address A. I send 5btc to B. The wallet creates a new address C and sets it as the change address. Then I try using the 5 btc on the wallet and it works. It allows me to send from address C. 

1) Is the wallet using unconfirmed outputs as inputs here?

2) If so, how is it doing this and how can I do it using raw transactions?

3) If not, what's going on here?
Is the wallet using unconfirmed outputs as inputs here?


Yes.


  If so, how is it doing this


Except for coinbase transactions, transactions are independent of blocks. A transaction spending an unconfirmed input looks exactly the same as a transaction spending a confirmed input.

It's safe for Bitcoin-Qt to spend unconfirmed change because it knows that the input is valid and will be confirmed at some point (though probably slowly). It would not be safe for Bitcoin-Qt to spend unconfirmed inputs that it did not itself create because they might never confirm, resulting in permanently tied-up funds. (Very old versions of Bitcoin made this mistake, but it was corrected after widespread issues.)


  how can I do it using raw transactions?


You can create the transaction with createrawtransaction normally, but you'll need to give signrawtransaction some extra info about the unconfirmed transaction in its second parameter.