|
C Interview Questions and Answers
What is a macro, and how do you use it?
A macro is a preprocessor directive that provides a mechanism for token
replacement in your source code. Macros are created by using the #define
statement.
Here is an example of a macro: Macros can also utilize special operators
such as the stringizing operator (#) and the concatenation operator
(##).The stringizing operator can be used to convert macro parameters to
quoted strings, as in the following example:
#define DEBUG_VALUE(v) printf(#v is equal to %d.n, v)
In your program, you can check the value of a variable by invoking the
DEBUG_VALUE macro:
...
int x = 20;
DEBUG_VALUE(x);
...
The preceding code prints x is equal to 20. on-screen. This example
shows that the stringizing operator used with macros can be a very handy
debugging tool.
What is the difference between goto and longjmp() and setjmp()?
A goto statement implements a local jump of program execution, and the
longjmp() and setjmp() functions implement a nonlocal, or far, jump of
program execution.
Generally, a jump in execution of any kind should be avoided because it
is not considered good programming practice to use such statements as
goto and longjmp in your program.
A goto statement simply bypasses code in your program and jumps to a
predefined position. To use the goto statement, you give it a labeled
position to jump to. This predefined position must be within the same
function. You cannot implement gotos between functions.
When your program calls setjmp(), the current state of your program is
saved in a structure of type jmp_buf. Later, your program can call the
longjmp() function to restore the program’s state as it was when you
called setjmp().Unlike the goto statement, the longjmp() and setjmp()
functions do not need to be implemented in the same function.
However, there is a major drawback to using these functions: your
program, when restored to its previously saved state, will lose its
references to any dynamically allocated memory between the longjmp() and
the setjmp(). This means you will waste memory for every malloc() or
calloc() you have implemented between your longjmp() and setjmp(), and
your program will be horribly inefficient. It is highly recommended that
you avoid using functions such as longjmp() and setjmp() because they,
like the goto statement, are quite often an indication of poor
programming practice.
Is it acceptable to declare/define a variable in a C header?
A global variable that must be accessed from more than one file can and
should be declared in a header file. In addition, such a variable must
be defined in one source file.
Variables should not be defined in header files, because the header file
can be included in multiple source files, which would cause multiple
definitions of the variable. The ANSI C standard will allow multiple
external definitions, provided that there is only one initialization.
But because there’s really no advantage to using this feature, it’s
probably best to avoid it and maintain a higher level of portability.
Global variables that do not have to be accessed from more than one file
should be declared static and should not appear in a header file.
Why should I prototype a function?
A function prototype tells the compiler what kind of arguments a
function is looking to receive and what kind of return value a function
is going to give back. This approach helps the compiler ensure that
calls to a function are made correctly and that no erroneous type
conversions are taking place.
What is the quickest searching method to use?
A binary search, such as bsearch() performs, is much faster than a
linear search. A hashing algorithm can provide even faster searching.
One particularly interesting and fast method for searching is to keep
the data in a digital trie. A digital trie offers the prospect of being
able to search for an item in essentially a constant amount of time,
independent of how many items are in the data set.
A digital trie combines aspects of binary searching, radix searching,
and hashing. The term digital trie refers to the data structure used to
hold the items to be searched. It is a multilevel data structure that
branches N ways at each level.
What are the advantages of auto variables?
1)The same auto variable name can be used in different blocks
2)There is no side effect by changing the values in the blocks
3)The memory is economically used
4)Auto variables have inherent protection because of local scope
What are the characteristics of arrays in C?
1) An array holds elements that have the same data type
2) Array elements are stored in subsequent memory locations
3) Two-dimensional array elements are stored row by row in subsequent
memory locations.
4) Array name represents the address of the starting element
5) Array size should be mentioned in the declaration. Array size must be
a constant expression and not a variable.
How do you print only part of a string?
/* Use printf() to print the first 11 characters of source_str. */
printf(First 11 characters: ‘%11.11s’n, source_str);
In C, what is the difference between a static variable and global
variable?
A static variable declared outside of any function is accessible only to
all the functions defined in the same file (as the static variable).
However, a global variable can be accessed by any function (including
the ones from different files).
In C, why is the void pointer useful?
When would you use it? The void pointer is useful because it is a
generic pointer that any pointer can be cast into and back again without
loss of information.
What is Polymorphism ?
'Polymorphism' is an object oriented term. Polymorphism may be defined
as the ability of related objects to respond to the same message with
different, but appropriate actions. In other words, polymorphism means
taking more than one form. Polymorphism leads to two important aspects
in Object Oriented terminology - Function Overloading and Function
Overriding. Overloading is the practice of supplying more than one
definition for a given function name in the same scope. The compiler is
left to pick the appropriate version of the function or operator based
on the arguments with which it is called. Overriding refers to the
modifications made in the sub class to the inherited methods from the
base class to change their behavior.
What is Operator overloading ?
When an operator is overloaded, it takes on an additional meaning
relative to a certain class. But it can still retain all of its old
meanings.
Examples:
1) The operators >> and << may be used for I/O operations because in the
header, they are overloaded.
2) In a stack class it is possible to overload the + operator so that it
appends the contents of one stack to the contents of another. But the +
operator still retains its original meaning relative to other types of
data. What are Templates
C++ Templates allow u to generate families of functions or classes that
can operate on a variety of different data types, freeing you from the
need to create a separate function or class for each type. Using
templates, u have the convenience of writing a single generic function
or class definition, which the compiler automatically translates into a
specific version of the function or class, for each of the different
data types that your program actually uses. Many data structures and
algorithms can be defined independently of the type of data they work
with. You can increase the amount of shared code by separating
data-dependent portions from data-independent portions, and templates
were introduced to help you do that.
What is the difference between run time binding and compile time
binding?
Dynamic Binding :
The address of the functions are determined at runtime rather than @
compile time. This is also known as "Late Binding".
Static Binding :
The address of the functions are determined at compile time rather than
@ run time. This is also known as "Early Binding"
What is Difference Between C/C++
C does not have a class/object concept.
C++ provides data abstraction, data encapsulation, Inheritance and
Polymorphism.
C++ supports all C syntax.
In C passing value to a function is "Call by Value" whereas in C++ its
"Call by Reference"
File extension is .c in C while .cpp in C++.(C++ compiler compiles the
files with .c extension but C compiler can not!)
In C structures can not have contain functions declarations. In C++
structures are like classes, so declaring functions is legal and
allowed.
C++ can have inline/virtual functions for the classes.
c++ is C with Classes hence C++ while in c the closest u can get to an
User defined data type is struct and union.
Page Numbers :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Have a Question ?
post your questions here. It
will be answered as soon as possible.
|