Tuesday, June 28, 2011

C questions........

(q)What will be output of following c program?

int *call();
void main(){
int *ptr;
ptr=call();
clrscr();
printf("%d",*ptr);

}
int * call(){
int x=25;
++x;
return &x;
}


Output: Garbage value
Explanation: variable x is local variable. Its scope and lifetime is within the function call hence after returning address of x variable x became dead and pointer is still pointing ptr is still pointing to that location.

Solution of this problem: Make the variable x is as static variable.

In other word we can say a pointer whose pointing object has been deleted is called dangling pointer.


Hide

4. What is wild pointer in c ? Answer


A pointer in c which has not been initialized is known as wild pointer.

Example:

(q)What will be output of following c program?

void main(){
int *ptr;
printf("%u\n",ptr);
printf("%d",*ptr);

}

Output: Any address
Garbage value


Here ptr is wild pointer because it has not been initialized.
There is difference between the NULL pointer and wild pointer. Null pointer points the base address of segmentwhile wild pointer doesn’t point any specific memory location.



Hide

5. What are merits and demerits of array in c? Answer



(a) We can easily access each element of array.
(b) Not necessity to declare two many variables.
(c) Array elements are stored in continuous memory location.

Demerit:
(a) Wastage of memory space. We cannot change size of array at the run time.
(b) It can store only similar type of data.



Hide

6. Do you know memory representation of
int a = 7; ? Answer



Memory representation of:

signed int a=7; (In Turbo c compiler)
signed short int a=7 (Both turbo c and Linux gcc compiler)
Binary equivalent of data 7 in 16 bit: 00000000 00000111
Data bit: 0000000 00000111 (Take first 15 bit form right side)
Sign bit: 0 (Take leftmost one bit)

First eight bit of data bit from right side i.e. 00000111 will store in the leftmost byte from right to left side and rest seven bit of data bit i.e. 0000000 will store in rightmost byte from right to left side as shown in the following figure:







Hide

7. What is and why array in c ? Answer


An array is derived data type in c programming language which can store similar type of data in continuous memory location. Data may be primitive type (int, char, float, double…), address of union, structure, pointer, function or another array.
Example of array declaration:
int arr[5];
char arr[5];
float arr[5];
long double arr[5];
char * arr[5];
int (arr[])();
double ** arr[5];



Array is useful when:
(a) We have to store large number of data of similar type. If we have large number of similar kind of variable then it is very difficult to remember name of all variables and write the program. For example:

//PROCESS ONE
void main(){
int ax=1;
int b=2;
int cg=5;
int dff=7;
int am=8;
int raja=0;
int rani=11;
int xxx=5;
int yyy=90;
int p;
int q;
int r;
int avg;
avg=(ax+b+cg+dff+am+raja+rani+xxx+yyy+p+q+r)/12;
printf("%d",avg);
}
If we will use array then above program can be written as:

//PROCESS TWO
void main(){
int arr[]={1,2,5,7,8,0,11,5,50};
int i,avg;
for(int i=0;i<12;i++){ avg=avg+arr[i]; } printf("%d",avg/12); } Question: Write a C program to find out average of 200 integer number using process one and two. (b) We want to store large number of data in continuous memory location. Array always stores data in continuous memory location. (q) What will be output when you will execute the following program? void main(){ int arr[]={0,10,20,30,40}; char *ptr=arr; arr=arr+2; printf("%d",*arr); } Advantage of using array: 1. An array provides singe name .So it easy to remember the name of all element of an array. 2. Array name gives base address of an array .So with the help increment operator we can visit one by one all the element of an array. 3. Array has many application data structure. Array of pointers in c: Array whose content is address of another variable is known as array pointers. For example: void main(){ float a=0.0f,b=1.0f,c=2.0f; float * arr[]={&a,&b,&c}; b=a+c; printf("%f",arr[1]); } Hide 8. Why we use do-while loop in c? Also tell any properties which you know ? Answer It is also called as post tested loop. It is used when it is necessary to execute the loop at least one time. Syntax: do { Loop body } while (Expression); Example: void main(){ int num,i=0; clrscr(); do{ printf("To enter press 1\n"); printf("To exit press 2"); scanf("%d",&num); ++i; switch(num){ case 1:printf("You are welcome\n");break; default : exit(0); } } while(i<=10); getch(); } Output: 3 3 4 4 If there is only one statement in the loop body then braces is optional. For example: (a) void main(){ double i=5.5678; clrscr(); do printf("hi"); while(!i); getch(); } Output: 3 3 4 4 (b) void main(){ double i=5.63333; clrscr(); do printf("hi"); while(!i); getch(); } Output: hi (c) void main(){ int x=25,y=1; do if(x>5)
printf(" ONE");
else if(x>10)
printf(" TWO");
else if(x==25)
printf(" THREE");
else
printf(" FOUR");
while(y--);
getch();
}

My Quote-