Welcome to C World

Hello to Everyone, This site is for C Beginners as well as c lovers.I Have added some useful stuff like C Programs, C Interview Questions and C Excercise. I am doing work on my blogspot website.I will add all the C related stuff time to time.

Visit this site and give comments, post ur problems and give suggestions.
Have a nice visit. :)

C Interview Questions

Q1.What is the output of printf("%d")?
Ans.1. 

1. When we write printf("%d",x); this means compiler will print the
value of x. But as here, there is nothing after %d so compiler will show
in output window garbage value.

2. When we use %d the compiler internally uses it to access the
argument in the stack (argument stack). Ideally compiler determines
the offset of the data variable depending on the format specification
string. Now when we write printf("%d",a) then compiler first accesses
the top most element in the argument stack of the printf which is %d
and depending on the format string it calculated to offset to the actual
data variable in the memory which is to be printed. Now when only %d
will be present in the printf then compiler will calculate the correct
offset (which will be the offset to access the integer variable) but as
the actual data object is to be printed is not present at that memory
location so it will print what ever will be the contents of that memory
location.

3. Some compilers check the format string and will generate an error
without the proper number and type of arguments for things like
printf(...) and scanf(...).

Q2.What does static variable mean?
Ans.2.

There are 3 main uses for the static.

1. If you declare within a function:-
It retains the value between function calls

2. If it is declared for a function name:-
By default function is extern..so it will be visible from other files if the
function declaration is as static..it is invisible for the outer files

3. Static for global variables:-
By default we can use the global variables from outside files If it is
static global..that variable is limited to with in the file.




Q3.Is using exit() the same as using return?
Ans.3.

No. The exit() function is used to exit your program and return control
to the operating system. The return statement is used to return from a
function and return control to the calling function. If you issue a return
from the main() function, you are essentially returning control to the
calling function, which is the operating system. In this case, the return
statement and exit() function are similar.


Q4.What is the difference between "calloc(...)" and
"malloc(...)"?
Ans.4.

1. calloc(...) allocates a block of memory for an array of elements of a
certain size. By default the block is initialized to 0. The total number of
memory allocated will be (number_of_elements * size).
malloc(...) takes in only a single argument which is the memory
required in bytes. malloc(...) allocated bytes of memory and not blocks
of memory like calloc(...).

2. malloc(...) allocates memory blocks and returns a void pointer to the
allocated space, or NULL if there is insufficient memory available.

calloc(...) allocates an array in memory with elements initialized to 0
and returns a pointer to the allocated space. calloc(...) calls malloc(...)
in order to use the C++ _set_new_mode function to set the new
handler mode.



Q5.Advantages of a macro over a function?
Ans.5.

Macro gets to see the Compilation environment, so it can expand __
__TIME__ __FILE__ #defines. It is expanded by the preprocessor.

For example, you can’t do this without macros
#define PRINT(EXPR) printf( #EXPR “=%d\n”, EXPR)
PRINT( 5+6*7 ) // expands into printf(”5+6*7=%d”, 5+6*7 );
You can define your mini language with macros:
#define strequal(A,B) (!strcmp(A,B))
Macros are a necessary evils of life. The purists don’t like them, but
without it no real work gets done.



Q6.Difference between const char* p and char const* p.
Ans.6.

In const char* p, the character pointed by ‘p’ is constant, so u cant
change the value of character pointed by p but u can make ‘p’ refer to
some other location.

In char const* p, the ptr ‘p’ is constant not the character referenced by
it, so u cant make ‘p’ to reference to any other location but u can
change the value of the char pointed by ‘p’.
footer