------------------------------------- Test Your "C" Skill ---------------------------------------
DECLARATIONS AND INITIALIZATION:
1.
#include<stdio.h>
void main()
{
char var *s1,*s2;
printf(""%d%d",sizeof(s1),sizeof(s2));
}
Outout:-
4 2
2.
#include<stdio.h>
int x=40;
void main()
{
int x=20;
printf("%d",x);
}
Outout:-
20
3.
#include<stdio.h>
void main()
{
int x=40;
{
int x=20;
printf("%d",x0;
}
printf("%d",x);
}
Output:-
20 40
4.
Is the following statement declaration or definition
extern int x;
Output:-
Declaration
5.
#include<stdio.h>
main()
{
extern int i;
i=20;
printf("%d",sizeof(i));
}
Output:-
Error,i undefined
Because extern int i is a declaration and not definition
6.Is it true that the global variable have many declarations but only one definition?
Output:-
yes
7.Is it true that the function may have many declarations but only one definition?
output:-
yes
8.what is the difference between declaration and definition of a variable
Output:-
Declaration:-only gives the type,status and nature of variable without reserving any space for the variable
Definition:-actual space is reserved for the variable and some initial value is given.
9.if the definition of the external variable occurs in the source file before it's use in a
particular function then there is no need for an external declaration in the function
Output:-
True
10.suppose the program is divided in three source files f1,f2,f3 and the variable is defined in file f1 but used in f2 and f3. In such a case would we need the external declaration for the variable in files f2 and f3?
Output:-
yes
11.what is the difference between following declarations
extern int fun()
int fun();
Output:-
Nothing except that that the first one gives us hint that function fun is probably in another file.
12. why does the following program reports the re declaration error of function display()
#include<stdio.h>
void main()
{
dispaly();
}
void dispaly()
{
printf("Hello world");
}
Output:-
Here the function display() is called before it is declared .That is why the compiler assumes it to be declared as
int display();
That accept unspecified no of arguments.i.e. undeclared function assumes to return int
On appearing the declaration the fun shows that it returns void hence the error
13.
void main()
{
extern int fun(float);
int a;
a=fun(3.14);
printf("%d",a);
}
int fun(aa) /* K & R style of function definition*/
float aa
{
return((int)aa);
}
Output:-
Error
Because we have mixed the ANSI prototype with k & r style of function definition
If we use an ANSI prototype and pass float to the function then it is promoted to double the function accepts it in to variable of type float hence the type mismatch occurs To ready the situation define the function as
int fun(float aa)
{
.....
}
14.point error if any
struct emp
{
char name[20];
int age;
}
fun(int aa)
{
int bb;
bb=aa*aa;
return(bb);
}
main()
{
int a;
a=fun(20);
printf("%d",a);
}
Output:-
Missing semicolon at the end of struct due to which the function fun assumed to be returning void of type struct emp.
But it returns an int hence the error
15.Correct the error
fun(struct emp);
struct emp
{
char name[20];
int age;
};
void main()
{
struct emp e={"Mukesh",21}
fun(e);
}
fun(struct emp ee)
{
printf("\n %s %d",ee.name,ee.age);
}
Output:-
Declare the structure before the prototype of fun().
16.What would be the output of the following program
void main()
{
int a[5]={2,3}
printf("\n %d %d %d",a[2],a[3],a[4]);
}
Output:-
0 0 0
If a automatic array is partially initialized then remaining elements are initialized by 0
17.
void main()
{
struct emp
{
char name[20];
int age;
float sal;
};
struct emp e={"Mukesh"}
printf("\n %d %f",e.age, e.sal);
}
Output:-
0 0.000000
If an automatic structure is partially initialized then remaining elements are initialized by 0.
18.point out error
void main()
{
int(*p)()=fun;
(*p)();
}
fun()
{
printf("\n Hello World");
}
Output:-
Here we are initializing function pointer to address of the function fun() but during the time of initialization the function has not been defined.
Hence an error To eliminate the error add the prototype of function fun() before the declaration of p, as shown bellow;
extern int fun(); or
int fun();
19.point error if any
void main()
{
union a
{
int i;
char ch[2];
};
union a z=512;
printf("%d %d",z.ch[0],z.ch[1]);
}
Output:-
In Pre-ANSI compiler union variable can not be initialized . ANSI compiler permits initialization of first member of the union
20.What do you mean by the scope of the variable? what are the 4 different types of scopes that a variables can have?
Output:-
Scope indicates the region over which the variable's declaration has an effect. The four kinds of scopes are:
---file
---function
---block
---prototype.
21. what are different types of linkages?
Output:-
There are three different types of linkages : external , internal , and none.
---External linkage means global, non-static variables and functions,
---Internal linkage means static variables and functions with file scope
--- None linkage means local variables.