c -- C Programming Language
C has inspired various other languages. Languages that are extensions of C include C++ and Objective-C.
Major interpreters and virtual machines written in C:
- CPython (Python)
- Ruby MRI (Ruby)
- Zend Engine (PHP)
Major operating systems written in C:
- Unix
- BSD
- Linux
- Windows
- Darwin (Mac OS X, iOS)
Major systems writtin in C:
- Postgres
- Redis
- Memcached
- Nginx
- Apache
You really should know C. I recommend learning C before C++ or Objective-C.
Memory
Memory management is what makes C (and C++) a significantly different beast. Precautions must be taken, even by programmers transitioning from C++.
&is "address of" -- use on variable to get its memory address*is "dereference" -- use on pointer variable to get/set value->is "access member" -- use with struct/union to access member variable. Recall that it is sugar for dotting into dereferenced variable
Use malloc to dynamically allocate memory on the heap:
- e.g.
int* integers = (int*) malloc(sizeof(int) * 10); - only argument is the number of bytes to allocate
- calculate bytes by multiplying
sizeofdata type by number of that data- e.g.
sizeof(int) * 10for an integer array of 10
- e.g.
- returns
void*(void pointer) which you should cast - remember it DOES NOT initialize the array
- remember to deallocate memory using
freefunction - remember to set pointer to
NULLafter freeing memory
REFERENCES
C dynamic memory allocation. Wikipedia.
Dangling pointer Wikipedia.
malloc. Linux man page. Covers malloc, free, calloc, realloc.