Yuva C
Yuva C
9. What is recursion ?
Recursion is a process by which a function calls itself directly or indirectly.
10.differentiate between structures and unions
A Structure does not have a shared location for all of its members. It makes
the size of a Structure to be greater than or equal to the sum of the size of its
data members. A Union does not have a separate location for every member
in it.
11.mention the advantages of pointers
Pointers in C programming are helpful to access a memory location.
Pointers are an effective way to access the array structure elements.
Pointers are used for the allocation of dynamic memory and the distribution.
12.what are files? explain the modes of opening your file
r - open a file in read mode. w - opens or create a text file in write mode. a -
opens a file in append mode. r+ - opens a file in both read and write mode
Part B answer any 6 questions
return 0;
}
18.explain different storage classes in detail
C Storage Classes are used to describe the features of a variable/function.
These features basically include the scope, visibility, and lifetime which help
us to trace the existence of a particular variable during the runtime of a
program.
C language uses 4 storage classes, namely:
storage classes in c
1. auto
This is the default storage class for all the variables declared inside a
function or a block. Hence, the keyword auto is rarely used while writing
programs in C language. Auto variables can be only accessed within the
block/function they have been declared and not outside them (which defines
their scope). Of course, these can be accessed within nested blocks within
the parent block/function in which the auto variable was declared.
However, they can be accessed outside their scope as well using the concept
of pointers given here by pointing to the very exact memory location where
the variables reside. They are assigned a garbage value by default whenever
they are declared.
2. extern
Extern storage class simply tells us that the variable is defined elsewhere
and not within the same block where it is used. Basically, the value is
assigned to it in a different block and this can be overwritten/changed in a
different block as well. So an extern variable is nothing but a global variable
initialized with a legal value where it is declared in order to be used
elsewhere. It can be accessed within any function/block.
Also, a normal global variable can be made extern as well by placing the
‘extern’ keyword before its declaration/definition in any function/block. This
basically signifies that we are not initializing a new variable but instead, we
are using/accessing the global variable only. The main purpose of using
extern variables is that they can be accessed between two different files
which are part of a large program.
3. static
This storage class is used to declare static variables which are popularly
used while writing programs in C language. Static variables have the
property of preserving their value even after they are out of their scope!
Hence, static variables preserve the value of their last use in their scope. So
we can say that they are initialized only once and exist till the termination of
the program. Thus, no new memory is allocated because they are not re-
declared.
Their scope is local to the function to which they were defined. Global static
variables can be accessed anywhere in the program. By default, they are
assigned the value 0 by the compiler.
4. register
This storage class declares register variables that have the same
functionality as that of the auto variables. The only difference is that the
compiler tries to store these variables in the register of the microprocessor if
a free register is available. This makes the use of register variables to be
much faster than that of the variables stored in the memory during the
runtime of the program.
If a free registration is not available, these are then stored in the memory
only. Usually, a few variables which are to be accessed very frequently in a
program are declared with the register keyword which improves the running
time of the program. An important and interesting point to be noted here is
that we cannot obtain the address of a register variable using pointers.
Call by value in C
In call by value method, the value of the actual parameters is copied into the
formal parameters. In other words, we can say that the value of the variable
is used in the function call in the call by value method.
In call by value method, we can not modify the value of the actual parameter
by the formal parameter.
In call by value, different memory is allocated for actual and formal
parameters since the value of the actual parameter is copied into the formal
parameter.
The actual parameter is the argument which is used in the function call
whereas formal parameter is the argument which is used in the function
definition.
Let's try to understand the concept of call by value in c language by the
example given below:
#include<stdio.h>
void change(int num) {
printf("Before adding value inside function num=%d \n",num);
num=num+100;
printf("After adding value inside function num=%d \n", num);
}
int main() {
int x=100;
printf("Before function call x=%d \n", x);
change(x);
printf("After function call x=%d \n", x);
return 0;
}