Difference between malloc and calloc?

calloc() gives you a zero-initialized buffer, while malloc() leaves the memory uninitialized. For large allocations, most calloc implementations under mainstream OSes will get known-zeroed pages from the OS (e.g. via POSIX mmap(MAP_ANONYMOUS) or Windows VirtualAlloc) so it doesn’t need to write them in user-space. This is how normal malloc gets more pages from the OS as well; calloc just takes advantage of the OS’s guarantee. This means calloc memory … Read more

Convert char to int in C and C++

Depends on what you want to do: to read the value as an ascii code, you can write to convert the character ‘0’ -> 0, ‘1’ -> 1, etc, you can write Explanation:a – ‘0’ is equivalent to ((int)a) – ((int)’0′), which means the ascii values of the characters are subtracted from each other. Since 0 comes directly before 1 in the ascii … Read more

What is the behavior of integer division?

Will result always be the floor of the division? What is the defined behavior? Not quite. It rounds toward 0, rather than flooring. 6.5.5 Multiplicative operators 6 When integers are divided, the result of the / operator is the algebraic quotient with any fractional part discarded.88) If the quotient a/b is representable, the expression (a/b)*b … Read more

How do I create an array of strings in C?

If you don’t want to change the strings, then you could simply do When you do it like this you will allocate an array of two pointers to const char. These pointers will then be set to the addresses of the static strings “blah” and “hmm”. If you do want to be able to change the actual string content, … Read more

char *array and char array[]

The declaration and initialization declares a pointer array and make it point to a constant array of 31 characters. The declaration and initialization declares an array of characters, containing 31 characters. And yes, the size of the arrays is 31, as it includes the terminating ‘\0’ character. Laid out in memory, it will be something like this for the … Read more