Writing C or C++ code in Arduino

Arduino code is effectively C/C++ and compiled with avr-gcc - meaning you can use all the power (and complexity) of C and some features of C++ in your sketches.

Arduino code builds on the standard AVR-libc which implements standard C functionality for the AVR platform (which the ATmega8 and other chips used in Arduino are part of), and provides low-level functions for accessing the hardware features of the microcontroller (like digital input and output, timers, etc). These functions, which you can use in your Arduino sketch, are documented in the AVR-libc reference.