C was the C++ predecessor. As its name implies, alot of C remains in C++. Although not actually being more powerful than C, C++ allows the programmer to more easily manage and operate with Objects, using an OOP (Object Oriented Programming) concept. C++ allows the programmer to create classes, which are somewhat similar to C structures. However, to a class can be assigned methods, functions associated to it, of various prototypes, which can access and operate within the class, somewhat like C functions often operate on a supplied handler pointer. Although it is possible to implement anything which C++ could implement in C, C++ aids to standardize a way in which objects are created and managed, whereas the C programmer who implements the same system has alot of liberty on how to actually implement the internals, and style among programmers will vary alot on the design choices made. In C, some will prefer the handler-type, where a main function initializes a handler, and that handler can be supplied to other functions of the library as an object to operate on/through. Others will even want to have that handler link all the related function pointers within it which then must be called using a convention closer to C++. In C, there's only one major memory allocation function: malloc. You use it to allocate both single elements and arrays. In C++, however, memory allocation for arrays is somewhat different than for single objects; you use the new operator, and you must match calls to new with calls to delete (rather than to delete). C++ applications are generally slower at runtime, and are much slower to compile than C programs. The low-level infrastructure for C++ binary execution is also larger. For these reasons C is always commonly used even if C++ has alot of popularity, and will probably continue to be used in projects where size and speed are primary concerns, and portable code still required (assembly would be unsuitable then). In C++, you are free to leave off the statement 'return 0;' at the end of main; it will be provided automatically but in C, you must manually add it. A function can be declared in C as int fun( );. This means that fun( ) is a function without any argument or any number of arguments. But in C++, this means that the function with no argument at all. C++ support operator overloading but c doesn't support operator overloading.