C Interview Questions
1)What is C Language?
a) C Programming Language is developed by Dennis Ritchie
and Ken Thompson for use on the UNIX Operating System.
b) C Language is designed for Procedural Programming.
c) C is a high-level and general-purpose programming
language that is an ideal language for developing
portable system applications.
2)What are the advantages of C Language?
a)Simple
b)Portable
c)Structured Programming
d)Fast Speed
e)Memory Management
f)Extensible
3)What is the Source Code?
Source Code is a Code which is written by the Programmer in human Readable
form with Proper Programming Syntax.
4)What is the Executable Code?
Executable Code is the machine-understandable code, which can be executed
by a machine (OS).
5)What is Object Code?
Object Code is a Sequence of Statements in machine language, and is the
output after the Compiler (or) Assembler Converts the Source Code.
6)What is a Compiler?
The compiler is a Software module which translate (convert) the Source
Code Of a Program into Executable Code.
7)Difference between Native Compiler and Cross Compiler?
a) The Compiler used to compile source code for the same type
of platform only.
The Compiler used to compile source code for different kinds
of platform.
b) A Native Compiler generates codes for the same machine.
A Cross Compiler generates code for another machine.
c) Ex: -Turbo C, GCC
Ex:-C51,ARMCC
8)What are the Compilation stages and their commands?
a)Preprocessor
1) Responsible for including the header files and removal of comments.
2) Responsible for replacements of macros.
3) Responsible for Conditional Compilation.
Command cc – e filename.c – o filename.i
b)Translator
1)Responsible for checking syntactical error and for converting
source code into assembly code.
2) It will decide the scope (visibility).
Command cc – s filename.i – o filename.s
c)Assembler
1) Responsible for converting assembly code into opcode.
cc – c filename.s – o
Command filename.o
d)Linker
1)Responsible for linking with libraries and adds operating System
information.
2) It will create an executable file.
3) Whenever you get the undefined error it’s generated by the linker.
Command cc filename.o – o filename
9) What are the types of Errors occurred in C?
There are two types of errors
1)Compile-time
2)Run time
a)Compile Time Error:
This error is generated by Compiler.
a)Pre-Processor Error
b)Translator Error
c)Linker Error
b)Runtime Error
This error is generated by Operating System.
a)Segmentation fault
b)Bus Error
c) Floating-point Exception Error(Divide with zero)
10)What is Code-Optimization?
a)Code Optimization is a program transformation
technique which tries to improve the code by making
it consumes fewer resources so that faster running
machine code will result.
b) Optimization should increase the speed and performance
of the program.
11)Write a logic for Set a Bit, Clear a Bit and Complement a bit?
a) Set a Bit:
num=num | 1 << pos
b) Clear a Bit:
num=num & ~ (1 << pos)
c)Complement a Bit:
num=num ^ 1 << pos
12)What is a Token?
a)The Token is an identifier. It can be constant, keyword,
string literal, etc.
A token is the smallest individual unit in a program.
b)C has the following tokens:
Identifiers: Identifiers refer to the name of the variables,
arrays & functions.
Keywords: Keywords are the predefined words that are
explained by the compiler.
Constants: Constants are the fixed values that
cannot
be changed during the execution of
a program.
Operators: An operator is a symbol that performs the
particular operation.
Special characters: All the characters except alphabets and
digits are treated as special characters.
13)What is a Variable?
Variable is a name that can be used to store values, it can take different
values but one at a time.
14)What is an Expression?
1)An Expression is a combination of operators, constants,
variables, and function calls.
2) An Expression can be arithmetic, logical (or) relational.
15)Difference between While and Do-While?
1) Condition is Checked first then the statement is executed.
Statement is executed at least once, therefore Condition
is checked.
2) No semicolon at the end of the while.
Semicolon at the end of the while.
3)While loop is an entry controlled loop
Do-While is exit controlled loop
16)Difference between Declaration and Definition?
1) Declaration tells the Compiler about data type and size
of the Variable.
Definition allocates memory to the Variable.
2) A Variable (or) the function can be declared any number
of times.
A Variable (or) a function can be defined only once.
3) The memory will not be allocated during declaration
Memory will be allocated
17)Difference between Local Variable and Global Variable?
1) A variable which is declared inside function (or) block is
known as local variables.
A Variable which is declared outside the function (or) block is
known as global variable.
2) Variables are stored in Stack unless specified.
The Compiler decides the storage location of a Variable.
18)What is Header File?
Header File is a File that contains the declaration of a library function, global
variables, and macro definitions.
The extension of the header file is ".h"
19)Difference between Little Endian and Big Endian?
1)Little Endian means that the lower-order byte of the number
is stored in memory at the lowest address, and the higher
order byte is stored at the highest address.
2)Big Endian means that the higher order byte of the number
is stored in memory at the lowest address, and the lower
order byte is stored at the highest address.
20)What is Pointer?
The pointer is one of the derived data the type which is useful for storing
the address of another variable through which we can access the data
indirectly.
21)What are the Uses of Pointer?
a) Accessing array elements
b) To get the address of a Variable.
c) Returning more than one value from a function.
d) Accessing Dynamically Allocated Memory.
e) Implementing data structures like Linked Lists, Trees.
22)What is Void Pointer?
a) Void Pointer is also known as Generic Pointer.
b) A Void Pointer is a Pointer that has no associated
data type with it.
c) A Void Pointer can hold the address of any type and
can be typecast to any type.
d) Void pointers cannot be dereferenced directly.
If we want to dereference we need to typecast it.
Because by typecasting it can be known to the
compiler how many bytes it needs to be fetched.
e) The generic pointer can hold any type of pointers
like char pointer, struct pointer, an array of pointers.
f) malloc () and calloc () return void*type and this allows
these functions to be used to allocate memory of any
datatype.
g) Void pointer in C is used to implement generic functions
in C.
23)What is Type-Casting?
It is a way of Converting a variable from one data-type to another data-
type.
Syntax : (type)expression
24)What is NULL Pointer?
a) If the pointer is holding zero as an address that pointer
is called a NULL pointer.
b) A NULL pointer is a pointer that is pointing to nothing.
c)In case, if we don't have an address to be assigned to
a pointer, then we can simply use NULL.
d)If you try to dereference the NULL pointer, the result
will be Segmentation fault.
25)What is Dangling Pointer?
a) After freeing the dynamic memory if the pointer is still
pointing to the freed memory such pointers are called as
Dangling pointer
b) To Avoid Dangling Pointer makes the pointer as NULL
Pointer.
26)What is Wild Pointer?
a)A Pointer which has not been initialized to anything is
known as a wild pointer.
b)The pointer may be initialized to a non-null garbage value
that may not be a valid address.
c) Uninitialized pointers are known as wild pointers.
d)These Pointers usually point to some arbitrary
memory locations and may cause a program to
crash (or) misbehave.
27)How to Avoid Wild Pointer?
a) Initialize them with the address of a known variable.
b) Explicitly allocate the memory and put the values in
the allocated memory.
28)What are the advantages of a Pointer?
a) Pointer reduces the code and improving the performance,
it is used to retrieving string, trees.
b) We can return multiple values from a function using the
pointers.
29)What is an Array?
The array is one of the derived data the type which is a collection of
similar types of elements and which are in contiguous memory locations.
30)What is a String?
a) String is null-terminated character array.
b) Strings are collection of characters ended with null
character ('\0').
31)Difference between Array and Pointer?
a)A data structure consists of a collection of elements
each identified by the array index.
A Programming language object that stores the
memory address of another value located in the
computer memory.
b)
Syntax: data type variable name[elements];
Syntax : data type *variable name ;
c) Stores the value of the variable of homogeneous data type.
Store the address of the variable of same data type as the
pointer’s a data type.
d) An array of pointers can be generated.
A pointer to an array can be generated.
e) Used to allocate fixed-size memory.
Used for dynamic memory allocation.
32)What is Pointer to an Array?
a) It is also known as the Array Pointer.
b) We are using the pointer to access the components of the array
Syntax: datatype(*var name) [size of array]
c) Ex: int (*a) [10]
Declares a pointer to an array of int.
d) The pointer to the array must be dereferenced to
access the value of each element.
33)What is an Array of Pointers?
a) It is an Array of the Pointers variables.
b) It is also known as Pointer Array.
Syntax: data type *varname[Array Size]
c) Ex: int *a [10];
Declares and allocates an array of pointers.
d) Each element must be dereferenced Individually.
34)What are the Functions in C?
a) The function blocks where the program code is written.
b) The function is a set of instructions placed together
to perform a specific task.
c) A function is a subroutine that is designed to perform
one task.
35)What is the use of writing a function in C Programming Language?
a) C functions are used to avoid the rewriting the
same code again and again in our program.
b) C functions can be called any number of times
from any place of our program.
c)When a program is divided into functions, then
any part of our program can easily be tracked.
d)C functions provide the reusability concept, i.e.,
it breaks the big task into smaller tasks so that it
makes the C program more understandable.
36)What is the Argument?
The calling functions send some values to the called function for
communication. These values are called arguments (or) parameters.
37)What are the Actual Arguments?
a)The Arguments that are mentioned in the function
call is known as actual Arguments.
b) These are the values which are actually sent
to the called function.
38)What are the Formal Arguments?
a)The name of the arguments which are mentioned
in the function definition is called formal
(or) dummy arguments.
39)What is the difference between Call By Value and Call By Reference?
1)When a copy of the value is passed to the function,
then the original value is not modified.
When a copy of the value is passed to the function,
then the original value is modified.
2) Actual arguments and formal arguments are created
in separate memory locations.
Actual arguments and formal arguments are created
in the same memory location.
3) In this case, actual arguments remain safe as they
cannot be modified.
In this case, actual arguments are not reliable, as they
are modified.
4) The copies of the actual arguments are passed to the
formal arguments.
The addresses of actual arguments are passed to their
respective formal arguments.
40)What is recursion in C?
When a function calls itself and this process is known as recursion. The
function that calls itself is known as a recursive function.
41)What are the Advantages of recursion?
a) The use of recursion makes the code more compact
and elegant.
b) It simplifies the logic and hence makes the program
easier to understand.
42)What are the Disadvantages of recursion?
a) The recursive solution is always logical and
it is very difficult to trace.
b) The code written using recursion is less efficient.
Since recursion is a slow process because of many
function calls involve overheads.
c) Recursion uses more processor time.
43)What are Storage Classes?
a)In addition to data type, each variable has one more
an attribute is known as a storage class.
b) The proper use of storage classes makes our program
efficient and fast.
c) We can specify a storage class while declaring a variable.
Stax :- storage class data type variable name
d)A Storage Class decides about these four aspects of a
variable
(a)Life Time --- Time between the creation and destruction
of a variable.
(b)Scope --- Locations where the variable is available for
use.
(c)Initial Value --- Default value taken by an uninitialized
variable.
(d)Place of Storage---Place in memory where the storage is
allocated for the variable.
44)What are the different types of Storage Classes?
a) Automatic
b) External
c)Static
d)Register
45)Explanation of Storage Classes?
Storage
Initial
class Linkage Storage Value Scope Life
With In End of
Auto None Stack Garbage Block Block
Global Till End
Data Multiple of
Extern External Segment Zero Files Program
Till End
Data With In of
Static Internal Segment Zero Block Program
CPU With In End of
Register None Register Garbage Block Block
46)What are the types of linkages in C?
There are three types of linkages in C are -
(a) External Linkage
(b)Internal Linkage
1)Local Variables have no linkage, so their scope
is only within the block where they are declared.
2)Global Variables and functions have external linkage,
so they can be used in any file of the program.
3)Static Global Variables and Static functions have
internal linkage so their scope is only in the file
where they are declared.
47)What are the command line arguments?
a)The argument passed to the main() function while executing
the program is known as command line argument.
b)Command-line arguments are the mechanism where we can supply
the input at load time.
48)What is Dynamic Memory Allocation?
a) In the case of dynamic memory allocation, memory is allocated at
runtime and memory can be increased while executing the program.
It is used in the linked list.
b) The malloc() or calloc() the function is required to allocate the memory
at the runtime.
c)An allocation or deallocation of memory is done at the
execution time of a program.
d) No dynamic pointers are required to access the memory.
e) The dynamic memory is implemented using data segments.
f)Less memory space is required to store the variable.
49)What is Static Memory Allocation?
a) In the case of static memory allocation, memory is allocated at
compile-time, and memory can't be increased while executing
the program. It is used in the array.
b) The lifetime of a variable in static memory is the lifetime of a program.
c) The static memory is allocated using the static keyword.
d) The static memory is implemented using stacks or heap
50)Difference between malloc() and calloc() ?
Prototype: void *malloc(size_t size);
Prototype: void *calloc(size_t nmeb,szie_t size);
a) Assigns single block of demanded memory.
Assigns Multiple blocks of the requested memory.
b)The allocated memory is not initialized to zero.
The allocated memory is Initialized to zero by using calloc()
c) malloc is faster.
calloc is safer.
51)What is a Memory leak?
If we lose the base address of dynamically allocated memory
that memory becomes a leak. (or) It occurs when programmers
create a memory in heap and forget to delete it.
52)Define Structure?
Structure is one of the user-defined data types which is a collection
of different types of data which are in contiguous memory locations.
53)What is Self Referential Structure in C?
In One Structure if one of the member is a pointer of the same structure
type then that structure is called a Self Referential Structure.
54)What are Structure Bit fields?
a)Bit fields are a mechanism where we can allocate memory for
storing the data in the form of "bits".
b) Bitfield variable can declare within a structure (or) with in a
union. outside of them it is not possible to declare it.
55)What is Structure Padding?
a) Allocating extra bytes for a structure variable than the required one
is called as structure Padding.
b) That extra unused byte is called as holes in a structure.
c) Structure padding is a compiler dependent concept.
d) Offset Calculation easy, and processing becomes faster.
56)How to avoid Structure Padding?
To Avoid Structure Padding, we can use Pragma Pack as well as
an attribute.
Ex: - #Pragma pack (1)
Informing the Compiler whatever the data type it should be multiple
of one.
57)What is meant by union?
The union is one of the user-defined datatype which is a collection
of different types of data that are in the same memory location.
58)Difference between Structure and Union?
a) The keyword struct is used to define a structure.
The keyword union is used to define a union.
b) When a Variable is associated with structure, the compiler allocates
the memory for each member. The size of the structure is greater
then (or) equal to the sum of the size of Its members.
When a Variable is associated with the union, the compiler allocates
the memory by Considering the size of the largest memory. So, the size
of
the union is equal to the size of the largest member.
c) Each member within a structure is assigned a unique storage area
of location.
Memory allocated is shared by individual members of the union.
d) An individual member can be accessed at a time.
Only one member can be accessed at a time.
59)What is Typedef?
Type def is one of the user-defined data types which is useful
for providing another name to the existing data type.so,
those declarations can be simplified.
Syntax: typedef olddatatypename new name
60)What is enum?
a) enum is one of the user-defined datatype which is useful for providing
a name to a Constants. So that understanding the program becomes
an easy.
b) It is a Collection of named integer Constants means each element
of enumeration is assigned by an integer value.
61)What is the need of Enumeration?
a) Enums can be declared in the local scope.
b)Enum names are automatically initialized by the compiler
62)What is a file?
a)A file is a named location which stores data (or)
information permanently. A file is always stored
inside a storage device using the file name.
b) The file is a collection of data that is present in the secondary memory.
63)What are Macros? What are its advantages and disadvantages?
a) Macros are processor the directive which will be replaced at
compile-time by Pre-Processor.
c)The disadvantage with macros are that they just replace the code
they do not function calls. So, the length of the code increases.
Simultaneously it increases the execution time.
d) Similarly the advantage is they can reduce the time for replacing the
same values.
64)Difference between #define and typedef?
a) It is a pre-processor directive.
It is a user-defined data type.
b) #define action takes place in the pre-processor stage.
Typedef action takes place in the translator stage.
c)Replacement takes place
No Replacement takes place
Syntax: #define macro name macro body
Syntax : typedef olddatatypename new name
65)What is a debugger?
A debugger or debugging tool is a a computer program that is used to
test and debug other programs.
66)In header files whether functions are declared or defined?
Functions are declared within the header file. That is function prototypes
exist in a header file, not function bodies. They are defined in the library
(lib).
67)How do signed and unsigned numbers affect memory?
In the case of signed numbers, the the first bit is used to indicate
whether positive or negative, this leaves you with one bit short.
With unsigned numbers, you have all bits available for that
number. The effect is best seen in the number range an unsigned 8-bit
the number has range 0-255, while the The 8-bit signed number has a
range
-128 to +127.
68)What is Garbage Collection?
Periodic Collection of all the free memory space to form Contiguous
block of free space by an The operating system is called Garbage
Collection.
69)What is Conditional Compilation?
a) Conditional Compilation directives help to compile a specific portion
of the program (or) let us skip compilation of some specific part of
the program based on some conditions.
b) It is used to reduce the size of an executable file.
70)Difference between printf() , sprintf() , fprintf()?
a) Print function is used to print character stream of data on
stdout console.
Syntax: int printf (const char*,...)
b) String Print function instead of printing on console store it on
char buffer which is specified in sprintf.
Syntax: int sprintf(char*str,const char*string,..)
c)fprintf is used to print the string content in the file but not on
stdout console.
Syntax: int fprintf (FILE*fptr, const char*str,...)
71)Difference between scanf(), sscanf(), fscanf()?
a) scanf () reads formatted input from stdin.
Syntax: int scanf (const char*,...)
b) sscanf () is used to read formatted input from the string.
Syntax: int sscanf(const char*s,const char * format
,...)
c) fscanf () reads formatted data from file and stores it into variables.
Syntax: int fscanf(FILE*stream,const char*format,...)
72)What is the advantage of the register storage class?
The main advantage of storing the variable as the register is they are stored
in CPU memory which is accessed by very fast compared to RAM.
This makes the program to get executed faster. Hence these types
of variables are mainly used where quick access to them is required.
73)Which one is faster n++ (or) n+1 ?
The Expression n++ requires a single machine instruction. The Expression
n+1 requires more instructions to carry out this operation. Hence n++
executes faster.
74)How to write a running C code without main()?
We will use Pre-processor directives #define with arguments to give an
impression that the the program runs without main. But in reality, it runs
with a hidden main function.
a) Using a macro that defines main
b) Using Token Pasting Operator
75)How can you avoid including a header more than once?
One easy technique to avoid multiple inclusions of the same header are
to use the #ifndef, #define and #endif preprocessor directives. When
you create a header for your the program, you can #define a symbolic
name
that is unique to that header.
76)How to find the size of a variable without using the sizeof() operator?
#include<stdio.h>
#define MY_SIZE(var) ((char*)(&var+1) - (char*) (&var))
int main()
{
int a;
printf("Value of my_size(a)=%d\n",MY_SIZE(a));
}
77)How to print a semicolon without using a semicolon in the code?
#include<stdio.h>
int main()
if(printf("%c",59))
78)How to print 1 to 100 without using a loop?
#include<stdio.h>
void fun(n)
{
if(n<100)
{
n++;
printf("%d",n);
fun(n);
}
}
main()
{
int n=0;
fun(n);
printf("\n");
}
79)How to deallocate memory without using free() in C?
a) Standard Library function realloc() can be used to
deallocate previously allocated memory.
b) If the size is zero then call to realloc is equivalent to
free (ptr).
Ex: realloc(ptr,0);
80)How to write a program containing two main() functions?
#include<stdio.h>
void main()
printf("In 1st Main \n");
func1();
#define main func1
void main()
{
printf("In 2nd Main\n");
81)Difference between #include<stdio.h> and #include"stdio.h" ?
Both are same, but #include<stdio.h> will search
in predefined path only whereas #include “stdio.h"
searches in its present working directory.
82)What is a main() and Difference between int main() and void main()?
a) main () is an entry point which is in most programming
languages, when compiler begins to compile the program,
it looks for an entry point, and main () acts as an entry
the point in the C program
b) We can say main is thread/process/function that invokes
automatically by the compiler when the program is being
executed.
a) Every function returns a value to the calling
function, at that time main will be a called
function for compiler/os it will return some
value to the compiler before exit here void and
int defines that main will return a void (nothing)
and int will return an integer values to the compiler.
83)When should we use the register storage specifier?
If a variable is used most frequently then it should
be declared using register storage specifier, then
possible the compiler gives CPU for its storage
to speed up the lookup of the variable.
84) Tell some situations where segmentation error comes?
a) When try to de-referencing a NULL pointer.
b) Trying to access memory which is already deallocated.
c) Using Wild Pointers.
d) Accessing out of array index bounds
e)Stack Over Flow
f)Improper use of scanf()
85)What is the Function Pointer?
Function the pointer is like normal pointers but they
have the capability to point a Function (or)
A function pointer is a variable that stores the
address of a function that can later be called
through that function pointer.
86)What is the use of a Function Pointer?
Function Pointers can be useful when you want to create a call back
mechanism, and need to pass the address of a function to another function.
87)What are the advantages of Function Pointer?
a) Unlike normal pointers, a function pointer points to code,
not data. Typically, a function pointer stores the start of
executable code.
b) Unlike normal pointers, we do not allocate deallocate
memory using function pointers.
c) A function’s name can also be used to get the function’s
address.
88)Difference between sizeof() and strlen() ?
sizeof() strlen()
sizeof is a unary operator strlen is a predefined function
It can be used with any data It can be used with only strings
type and character arrays
It just counts the length of the
It gives the size in bytes string
It includes slash zero It doesn’t include slash zero
Char str[]=”tie” Char str[]=”tie”
printf(“%d”,sizeof(str)) = 4 Printf(“%d”,strlen(str))=3
89)What is meant by the Reentrant function?
a)A function is said to be reentrant if there is a provision to interrupt
the function in the course of execution, service the interrupt service
routine and then resume the earlier going on function, without
hampering its earlier course of action.
b)Reentrant functions are used in applications like hardware
interrupt handling, recursion, etc.
90)What is Linker Error?
Linker is to link the functions calls with function definitions.
If at this stage function definition not found, linker will
generate error.
91)Tell some situations where Linker error comes?
1)Due to wrong function prototyping.
2)Incorrect Header Files.
3)One of the linker error is writing Main() instead of main()
4)Another linker error is writing print() instead of print().
92)What is the L-value error?
This error occurs when we put constants on the left-hand side of
Equal to Operator and variables on the right-hand side of it.
93)What is a Bus Error?
a) A bus occurs when a process is trying to access the memory that
the CPU cannot physically address (or) memory tried to access by
the program is not a valid memory address.
b) A bus error is a low-level hardware related error. When a program
tries to access the memory location whose address is not present in
the RAM, bus error generates.
94)What are the causes of the bus error?
Some common causes of bus errors are invalid file descriptors,
unreasonable I/O requests, bad memory allocation, misaligned
data structures, compiler bugs, and corrupt boot blocks.
95)What is a.out file?
a) a.out remains the default output file name for executables created
by certain compilers and linkers
b) This is an abbreviated form of assembler output
c) It may store executable code shared libraries or object code.
96)How does free() (Or) realloc() know the size of memory to be deallocated?
When memory allocation is done, it allocates extra bytes to hold
an integer containing the size of the block. This integer is
located at the beginning of the block.
97)What is the size of the empty structure in c?
zero
98)Where do macros get stored in the memory layout in C programming?
1.Macros are not stored in memory anywhere in the final
program but instead, the code for the macro is repeated
whenever it occurs.
2.As far as the actual compiler is concerned they don't even
exist, they've been replaced by the preprocessor before they
get that far.
99)what is the stack frame?
The set of values pushed for one function call is termed as a stack frame
100)What are the memory segments of a C Programming?
1.Stack
2.Text segment
3.Data segment
4.Heap
101)What is meant by the stack segment?
1.Stack is of LAST IN FIRST OUT Structure.
2.It is used to store all local variables and auto variables
3.It is used for passing arguments to the functions along with
the return address of the instruction which is used to be
executed after the function call is over.
102)What is meant by Text Segment?
1.Text segment is also called a Code segment
2.It contains executable instructions
3.It is read-only and shared memory
103)What are the types of data segments?
There are two types of data segments
1.Initialized Data Segment
2.Uninitialized Data Segment
104)What is meant by Initialized Data Segment?
1.It is also called a Data Segment.
2.All the global, static, const, and extern variables initialized
by the program are stored in the Data Segment.
3.It is not read-only since it can be changed during run time.
4.It can further be classified as read-only area and read-write area
Example:
#include<stdio.h>
int a=15;
// Global Variable stored in Initialized data segment in read-write area //
const char s[]="techinfoex"
//Global Variable stored in initialized data segment in read-only area//
const char * p="techinfoex"
//Global Variable stored in initialized data segment in read-only area//
int main()
{
static int b=16; // Static variable stored in Initialized data segment //
105) What is meant by Uninitialized Data Segment?
1.It is also called as Block Started by Symbol(BSS).
2.Every member of this segment is initialized by the
kernel to zero before the program starts executing.
3.All the global and static which are not initialized by the
program are stored in this segment.
Example:
#include<stdio.h>
char c; // Uninitialized Global Variable //
int main()
static int i; // Uninitialized Static Variable//
106)What is meant by the Heap segment?
1.Heap is the segment where dynamic memory allocation
usually takes place.
2.Using malloc and calloc we can allocate memory in the heap segment.
3.The Heap area is shared by all shared libraries and dynamically
loaded modules in a process.
107)Difference between ++(*p) ,++*p,*(++p),*++p,*p++,*(p++) and (*p)++ ?
1)*p represents the value stored in a pointer.
2)++ is an increment operator used in prefix and postfix
expressions
3)* is a dereference operator
4) Precedence of prefix ++ and * is the same.
Associativity of both is right to left
5) Precedence of postfix ++ is higher than both * and prefix ++.
Associativity of postfix ++ is left to right
a)The expression ++(*p) has three operators. In this
Parentheses is having the highest precedence.
Here, the value is incremented at that particular location.
b) The expression ++*p has two operators of same
precedence, so the compiler looks for associativity.
Associativity of operators is right to left.
Therefore, the expression is treated as ++(*p).
c)The expression *(++p) has three operators. In this
Parentheses is having the highest precedence.
Here the pointing location is incremented to next
location and then the value is fetched.
d)The expression *++p has two operators of same
precedence, so the compiler looks for associativity.
Associativity of operators is right to left.
Therefore, the expression is treated as *(++p).
e) The expression *p++ has two operators. In this
postfix is having higher precedence.
So, pointing location is incremented to next
location and then the value is fetched.
f) The expression *(p++) has three operators. In this
Parentheses is having highest precedence.
Here, the pointing location is incremented to
next location and then the value is fetched.
g) The expression (*p) ++ has three operators. In this
Parentheses is having the highest precedence.
Here, the value is incremented at that particular location.
108)Exlain the following
a)const int *ptr
b)int const*ptr
c)const int * const ptr
d)int *const ptr
e)int const *const ptr
a)const int * ptr
ptr is a pointer to an integer constant
value cannot change
ptr can start pointing to other locations
b)int const *ptr
ptr is a pointer to a constant integer
value cannot change
ptr can start pointing to other locations
c)const int *const ptr
ptr is a constant pointer to an integer constant
value cannot be change
ptr cannot point to other variables once assigned
d)int *const ptr
ptr is a constant pointer to an integer
value can change
ptr cannot point to other variables once assigned
e) int const *const ptr
ptr is a constant pointer to an integer constant
value cannot be changed
ptr cannot point to other variables once assigned
109)What is the use of return 0 in the main() function?
return 0 indicates Successful "EXIT_STATUS" of the Program
'0' is the value returned by the main( ) function to the Operating System(OS)
after the Program is Executed Successfully
But if during the Program Execution some "ERROR" occurs then instead of '0'
some random value gets returned by the main( ) function to the Operating
System. This indicates that some "ERROR" had occurred during the Program
Execution