|
C Interview Questions and Answers
What is an argument ? differentiate between formal arguments and
actual arguments?
An argument is an entity used to pass the data from calling function to
the called function. Formal arguments are the arguments available in the
function definition. They are preceded by their own data types. Actual
arguments are available in the function call.
What are advantages and disadvantages of external storage class?
Advantages of external storage class
1)Persistent storage of a variable retains the latest value
2)The value is globally available
Disadvantages of external storage class
1)The storage for an external variable exists even when the variable is
not needed
2)The side effect may produce surprising output
3)Modification of the program is difficult
4)Generality of a program is affected
What is a void pointer?
A void pointer is a C convention for a raw address. The compiler has no
idea what type of object a void Pointer really points to. If you write
int *ip;
ip points to an int. If you write
void *p;
p doesn’t point to a void!
In C and C++, any time you need a void pointer, you can use another
pointer type. For example, if you have a char*, you can pass it to a
function that expects a void*. You don’t even need to cast it. In C (but
not in C++), you can use a void* any time you need any kind of pointer,
without casting. (In C++, you need to cast it).
A void pointer is used for working with raw memory or for passing a
pointer to an unspecified type.
Some C code operates on raw memory. When C was first invented, character
pointers (char *) were used for that. Then people started getting
confused about when a character pointer was a string, when it was a
character array, and when it was raw memory.
How can type-insensitive macros be created?
A type-insensitive macro is a macro that performs the same basic
operation on different data types.
This task can be accomplished by using the concatenation operator to
create a call to a type-sensitive function based on the parameter passed
to the macro. The following program provides an example:
#include
#define SORT(data_type) sort_ ## data_type
void sort_int(int** i);
void sort_long(long** l);
void sort_float(float** f);
void sort_string(char** s);
void main(void);
void main(void)
{
int** ip;
long** lp;
float** fp;
char** cp;
...
sort(int)(ip);
sort(long)(lp);
sort(float)(fp);
sort(char)(cp);
...
}
This program contains four functions to sort four different data types:
int, long, float, and string (notice that only the function prototypes
are included for brevity). A macro named SORT was created to take the
data type passed to the macro and combine it with the sort_ string to
form a valid function call that is appropriate for the data type being
sorted. Thus, the string
sort(int)(ip);
translates into
sort_int(ip);
after being run through the preprocessor.
When should a type cast not be used?
A type cast should not be used to override a const or volatile
declaration. Overriding these type modifiers can cause the program to
fail to run correctly.
A type cast should not be used to turn a pointer to one type of
structure or data type into another. In the rare events in which this
action is beneficial, using a union to hold the values makes the
programmer’s intentions clearer.
When is a switch statement better than multiple if statements?
A switch statement is generally best to use when you have more than two
conditional expressions based on a single variable of numeric type.
What is storage class and what are storage variable ?
A storage class is an attribute that changes the behavior of a variable.
It controls the lifetime, scope and linkage.
There are five types of storage classes
1) auto
2) static
3) extern
4) register
5) typedef
What is a static function?
A static function is a function whose scope is limited to the current
source file. Scope refers to the visibility of a function or variable.
If the function or variable is visible outside of the current source
file, it is said to have global, or external, scope. If the function or
variable is not visible outside of the current source file, it is said
to have local, or static, scope.
How can I sort things that are too large to bring into memory?
A sorting program that sorts items that are on secondary storage (disk
or tape) rather than primary storage (memory) is called an external
sort. Exactly how to sort large data depends on what is meant by too
large to fit in memory. If the items to be sorted are themselves too
large to fit in memory (such as images), but there aren’t many items,
you can keep in memory only the sort key and a value indicating the
data’s location on disk. After the key/value pairs are sorted, the data
is rearranged on disk into the correct order. If too large to fit in
memory means that there are too many items to fit into memory at one
time, the data can be sorted in groups that will fit into memory, and
then the resulting files can be merged. A sort such as a radix sort can
also be used as an external sort, by making each bucket in the sort a
file. Even the quick sort can be an external sort. The data can be
partitioned by writing it to two smaller files. When the partitions are
small enough to fit, they are sorted in memory and concatenated to form
the sorted file.
What is a pointer variable?
A pointer variable is a variable that may contain the address of another
variable or any valid address in the memory.
What is a pointer value and address?
A pointer value is a data object that refers to a memory location. Each
memory location is numbered in the memory. The number attached to a
memory location is called the address of the location.
What is a modulus operator? What are the restrictions of a modulus
operator?
A Modulus operator gives the remainder value. The result of x%y is
obtained by (x-(x/y)*y). This operator is applied only to integral
operands and cannot be applied to float or double.
Differentiate between a linker and linkage?
A linker converts an object code into an executable code by linking
together the necessary build in functions. The form and place of
declaration where the variable is declared in a program determine the
linkage of variable.
What is a function and built-in function?
A large program is subdivided into a number of smaller programs or
subprograms. Each subprogram specifies one or more actions to be
performed for a large program. such subprograms are functions.
The function supports only static and extern storage classes. By default,
function assumes extern storage class. functions have global scope. Only
register or auto storage class is allowed in the function parameters.
Built-in functions that predefined and supplied along with the compiler
are known as built-in functions. They are also known as library
functions.
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.
|