# 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://docs.hex-rays.com/developer-guide/idc/core-concepts/variables)
* [Functions](https://docs.hex-rays.com/developer-guide/idc/core-concepts/functions)
* [Statements](https://docs.hex-rays.com/developer-guide/idc/core-concepts/statements)
* [Expressions](https://docs.hex-rays.com/developer-guide/idc/core-concepts/expressions)
* [Predefined symbols](https://docs.hex-rays.com/developer-guide/idc/core-concepts/predefined-symbols)
* [Slices](https://docs.hex-rays.com/developer-guide/idc/core-concepts/slices)
* [Exceptions](https://docs.hex-rays.com/developer-guide/idc/core-concepts/exceptions)
* [Index of IDC functions](https://idc.docs.hex-rays.com/)
* [Index of debugger related IDC functions](https://idc.docs.hex-rays.com/)
