# Core concepts

IDC language is a C-like language. It has the same lexical tokens as C does: character set, constants, identifiers, keywords, etc. However, since it is a scripting language, there are no pointers, and all variable types can be handled by the interpreter. Any variable may hold any value; variables are declared without specifying their type;

auto myvar;

An IDC program consists of function declarations. By default, execution starts from a function named 'main'.

Select a topic to read:

* [Variables](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/161.md)
* [Functions](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/160.md)
* [Statements](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/159.md)
* [Expressions](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/158.md)
* [Predefined symbols](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/1165.md)
* [Slices](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/1578.md)
* [Exceptions](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/89.md)
* [Index of IDC functions](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/162.md)
* [Index of debugger related IDC functions](https://github.com/HexRaysSA/docs/blob/IDA-8.4/developer-guide/idc/1216.md)
