|In Ruby, there is no need to compile the code, it can be run directly.
|In C, compilation of code is necessary because it cannot be run directly.
|It’s require ‘foo’ instead of #include or #include “foo”.
|Nothing like that is required in C.
|There are no variable declarations in Ruby.
|Variable declaration is necessary in C.
|In Ruby, there’s no macros or pre-processor, no casts, no pointers, no typedefs, sizeof, nor enums available.
|Whereas, they are present in C.
|Arguments to methods (i.e. functions) are passed by value, where the values are always object references.
|In C functions are passed by value as well as passed by reference.
|Parentheses for method (i.e. function) calls are often optional.
|This is not optional in C.
|There is no char—they are just 1-letter strings.
|Char is used in C for one character.
|Array literals go in brackets instead of braces in Ruby.
|Array literals go in braces in C.
|You cannot drop down to assembly.
|In C you cannot drop down to assembly.
|In Ruby, objects are strongly typed.
|In C, objects are not strongly typed.
|You go without parentheses for if and while condition expressions.
|Parentheses are needed in C with if and while expressions.
|Strings don’t end with a null byte in Ruby.
|While strings ends with a null byte in C.
|If you add two arrays, you get back a new and bigger array (of course, allocated on the heap) instead of doing pointer arithmetic.
|There is a need of pointer arithmetic in C.
|In Ruby, arrays just automatically get bigger when you stuff more elements into them.
|In C, automatically array cannot gets bigger.
|All variables live on the heap. Further, you don’t need to free them yourself—the garbage collector takes care of that.
|In C, we need to free them ourself because garbage collector is not present in C.
|You don’t usually use braces—just end multi-line constructs (like whileloops) with an end keyword.
|Braces are required because ignoring braces will cause syntax error.
|All the functions and classes are defined in the main source code files as there are no header files present in ruby.
|Header files are present in C.
|There’s no semicolons ending lines.
|There is ending lines.
|There’s no #define in ruby. Just use constants.
|#define is there in C.
|The do keyword is for so-called “blocks”. There’s no “do statement” like in C.
|Do statement is used in C with while to make a loop like do-while.