user4194: I am a beginner and I want to learn AVR C/C++. Can I do this using an Arduino?  (I'm asking this because I already have one).
If so, could someone tell me using which IDE can I write code in pure C/C++ and then flash it to the Atmega328P on the Arduino?  Or, should I get an AVR and a programmer instead?
I've searched all over the internet and I'm really confused by all the terminology. Could someone explain it to me?    

user19409: An Arduino is programmed in C/C++. There is a common misconception that Arduino has its own language. See this link C++ vs. The Arduino Language? for a full discussion on Arduino being C/C++ and the simplifications Arduino offers. Further more, you can see the Arduino core code here.
From the Arduino website:

Can I program the Arduino board in C?
In fact, you already are; the Arduino language is merely a set of C/C++ functions that can be called from your code. Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and then is passed directly to a C/C++ compiler (avr-g++). All standard C and C++ constructs supported by avr-g++ should work in Arduino. For more details, see the page on the Arduino build process.

Arduino offers an easy learning curve for beginners through to experts. So simply download the latest Arduino IDE, install it and enjoy.

user4202: If you're a beginner, I suggest you write C in the Arduino IDE. The libraries are very useful and I think the Arduino/Wiring/Processing environment will cover all your needs.
Check out the Lightblue Bean (http://punchthrough.com/bean/) it is a good example of the power of that platform. Even experienced embedded programmers can use it, since the underlying register are still accessible.
I am now programming on the Ti MSP430, and while I can appreciate the possibilities, I miss the simplicity of Arduino; much easier to get started with Arduino.
Go to http://arduino.cc/en/main/software to download the 1.0.6. IDE software, plug your Arduino, go to Tools->Board to select your Arduino, select the appropriate "tty" port in the Tools->Serial_Port.
Then write in pure C and download. There are tons of examples included with the IDE.

user4195: Yes, get an AVR programmer instead. 
1) You can flash your arduino board with avrdude/avr-gcc. Install these tools, find the datasheet of atmega328 (google it), use the board pinouts to connect to your programmer (stk500v2/ISP) and voila! 
2) Keep in mind that by "manually" flashing your atmaga on arduino board you're removing bootloader that is needed to load your sketches from ARDUINO IDE. 
3) Use your favourite C/C++ IDE

4194: <p>I am a beginner and I want to learn AVR C/C++. Can I do this using an Arduino?  (I'm asking this because I already have one).</p>

<p>If so, could someone tell me using which IDE can I write code in pure C/C++ and then flash it to the Atmega328P on the Arduino?  Or, should I get an AVR and a programmer instead?</p>

<p>I've searched all over the internet and I'm really confused by all the terminology. Could someone explain it to me?    </p>
 19409: <p>An Arduino is programmed in C/C++. There is a common misconception that Arduino has its own language. See this link <a href="https://arduino.stackexchange.com/q/816/19409">C++ vs. The Arduino Language?</a> for a full discussion on Arduino being C/C++ and the simplifications Arduino offers. Further more, you can see the <a href="https://github.com/arduino/ArduinoCore-avr/tree/master/cores/arduino" rel="nofollow noreferrer">Arduino core code here</a>.</p>
<h3>From the Arduino website:</h3>
<blockquote>
<p><a href="https://www.arduino.cc/en/Main/FAQ#toc13" rel="nofollow noreferrer">Can I program the Arduino board in C?</a><br />
In fact, you already are; the Arduino language is merely a set of C/C++ functions that can be called from your code. Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and then is passed directly to a C/C++ compiler (avr-g++). All standard C and C++ constructs <a href="https://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_cplusplus" rel="nofollow noreferrer">supported by avr-g++</a> should work in Arduino. For more details, see the page on the <a href="https://arduino.github.io/arduino-cli/sketch-build-process/" rel="nofollow noreferrer">Arduino build process</a>.</p>
</blockquote>
<p>Arduino offers an easy learning curve for beginners through to experts. So simply <a href="https://www.arduino.cc/en/Main/Software" rel="nofollow noreferrer">download the latest Arduino IDE</a>, install it and enjoy.</p>
 4202: <p>If you're a beginner, I suggest you write C in the Arduino IDE. The libraries are very useful and I think the Arduino/Wiring/Processing environment will cover all your needs.</p>

<p>Check out the Lightblue Bean (<a href="http://punchthrough.com/bean/" rel="nofollow">http://punchthrough.com/bean/</a>) it is a good example of the power of that platform. Even experienced embedded programmers can use it, since the underlying register are still accessible.</p>

<p>I am now programming on the Ti MSP430, and while I can appreciate the possibilities, I miss the simplicity of Arduino; much easier to get started with Arduino.</p>

<p>Go to <a href="http://arduino.cc/en/main/software" rel="nofollow">http://arduino.cc/en/main/software</a> to download the 1.0.6. IDE software, plug your Arduino, go to Tools->Board to select your Arduino, select the appropriate "tty" port in the Tools->Serial_Port.
Then write in pure C and download. There are tons of examples included with the IDE.</p>
 4195: <p>Yes, get an AVR programmer instead. </p>

<p>1) You can flash your arduino board with <strong>avrdude/avr-gcc</strong>. Install these tools, find the datasheet of atmega328 (google it), use the board pinouts to connect to your programmer (stk500v2/ISP) and voila! </p>

<p>2) Keep in mind that by "manually" flashing your atmaga on arduino board you're removing bootloader that is needed to load your sketches from ARDUINO IDE. </p>

<p>3) Use your favourite C/C++ IDE</p>
