Share
More
► C Progr amming amming Languag Languag ► C++ Language ► C++ Code C QUESTIONS AND ANSWERS
C program program ex amples C interview questions and answers Data type questions Variable naming rule ques questions tions Operators questions Control flow questions Switch case questions Looping questions
Nex t Blog»
Creat e Blog
Sign In
Pointer questions String questions Printf,Scanf questions
C pointers questions
Preprocessor questions Structure questions
C pointers interview questions and answers Commad line argument C questions in Linux C online test C mixed practice sets
Frequently
asked
technical
explanation of placement in Note:
Linux
GCC
compilers
objective
types
multiple
Visual
C++
compiler doesn't
pointers.
1.
C programming forums
What will be output of following program?
C TUTORIAL
#include #include int main(){ int main(){ int a int a = 320; char *ptr; char *ptr; ptr =( char char *)&a; *)&a; printf("%d printf("%d ",*ptr); ",*ptr); return 0; }
Memory mapping tutorial tutorial in c Variables tutorial in c Data types tutorial in c Storage classes tutorial in c Looping tutorial in c Pointers tutorial in c
(A) 2 (B) 320
Function tutorial in c
(C) 64
Array tutorial in c
(D) Compilation error
Preprocessor tutorial in c
(E) None of above
Advanced c tutorial
POPULAR POSTS
Output
E x p l a n a t i o n :
C program examples Check given number is prime number or not using c program C interview questions and answers QUICK SORT USING C PROGRAM
Turbo C++ 3.0: 64
pointer
questions
with
c programming language and
C tricky questions Example of recursion in c
choice
support
far
and
huge
31/07/2013
C pointer s q uesti ons
Merge sort program in c
Turbo C ++4.5: 64 Program to convert decimal to binary in c
Linux GCC: 64 Write a c program to reverse a string Find out the perfect number using c program
Visual C++: 64
Write a c program to find out sum of digit of given number TO FIND FIBONACCI SERIES USING C PROGRAM
SUBSCRIBE VIA EMAIL
As we know int is two byte data byte while char is one byte data byte. char pointer can keep the address one byte at time.
Binary value of 320 is 00000001 01000000 (In 16 bit)
Enter your email address:
Memory representation of int a = 320 is: Subscribe
Delivered by FeedBurner
C PROGRAMMING QUESTIONS AND ANSWER
C questions and answers Debugging questions in c with answers Aptitude questions and answers in c C basic questions
So ptr is pointing only first 8 bit which color is green and Decimal
Multiple choice questions in c
value is 64.
STANDARD OF QUESTIONS ? Excellent
2.
Good
What will be output of following program?
Avg Av g Worst Vote
Show results
Votes so far: 5505 Days left to vote: 865
#include #include #include #include int main(){ int main(){ void (*p)(); void (*p)(); int (*q)(); int (*q)(); int (*r)(); int (*r)(); p = clrscr;
31/07/2013
C pointers questions SUBSCRIBE TO
Posts Comments
MY HEADLINES
q = getch; r = puts; (*p)(); (*r)("cquestionbank.blogspot.com"); (*q)(); return 0; }
C programming questions and answer C questions and answers
(A) NULL
Debugging questions in c with answers
(B) cquestionbank.blogspot.com
Aptitude questions and answers in c
(C) c
C basic questions
(D) Compilation error
Multiple choice questions in c Objective questions of c
(E) None of above
Program in c language
Output
Simple program example in c language Tricky c questions and answers
E x p l a n a t i o n :
C programming online test C Linux interview questions and answers
Turbo C++ 3.0: cquestionbank.blogspot.com
Looping questions in c and answers C string questions and answers with explanation
Turbo C ++4.5: cquestionbank.blogspot.com
C operator questions with answers Check the given number is palindrome number or not using c program C pointers questions
Linux GCC: Compilation error Visual C++: Compilation error
Data type questions in c Check given number is prime number or not using c program struct bit fields questions in c C questions answers
p is pointer to function whose parameter is void and return type is
C interview questions and answers
also void. r and q is pointer to function whose parameter is void and
How to test palindrome in c++
return type is int . So they can hold the address of such function.
Palindrome number in c++ Program of palindrome number in c++ C++ code to get sum of all odd numbers in given range
3. What will be output of following program? #include int main(){
31/07/2013
C pointers questions ABOUT ME
ritesh kumar Follow
1.2k
View my complete profile
GOOGLE+ BADGE
int i = 3; int *j; int **k; j=&i; k=&j; printf("%u %u %d ",k,*k,**k); return 0;
}
(A) Address, Address, 3 Add to circles
(B) Address, 3, 3 (C) 3, 3, 3 (D) Compilation error (E) None of above Output
Explanation:
Turbo C++ 3.0: Address, Address, 3
Turbo C ++4.5: Address, Address, Address
Linux GCC: Address, Address, 3
Visual C++: Address, Address, 3
Memory representation
31/07/2013
C pointers questions
Here 6024, 8085, 9091 is any arbitrary address, it may be different.
Value of k is content of k in memory which is 8085
Value of *k means content of memory location which address k keeps.
k keeps address 8085 .
Content of at memory location 8085 is 6024
In the same way **k will equal to 3.
Short cut way to calculate:
Rule: * and & always cancel to each other
i.e. *&a = a
So *k = *(&j) since k = &j
*&j = j = 6024
And **k = **(&j) = *(*&j) = *j = *(&i) = *&i = i = 3
4.
31/07/2013
C pointers questions
What will be output of following program? #include int main(){ char far *p =(char far *)0x55550005; char far *q =(char far *)0x53332225; *p = 80; (*p)++; printf("%d",*q); return 0; }
(A) 80 (B) 81 (C) 82 (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 81
Turbo C ++4.5: Compilation error
Linux GCC: Compilation error
Visual C++: Compilation error
Far address of p and q are representing same physical address.
Physical 0x55555
address
of
0x55550005
=
(0x5555)
*
(0x10)
+
(0x0005)
=
31/07/2013
C pointers questions
Physical address of 0x53332225 = (0x5333 * 0x10) + (0x2225) = 0x55555
*p = 80, means content at memory location 0x55555 is assigning value 25
(*p)++ means increase the content by one at memory location 0x5555 so now content at memory location 0x55555 is 81
*q also means content at memory location 0x55555 which is 26
5. What will be output of following program? #include #include int main(){ char *ptr1 = NULL; char *ptr2 = 0; strcpy(ptr1," c"); strcpy(ptr2,"questions"); printf("\n%s %s",ptr1,ptr2); return 0; }
(A) c questions (B) c (null) (C) (null) (null) (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: (null) (null) Turbo C ++4.5: Run time error
31/07/2013
C pointers questions
Linux GCC: Run time error Visual C++: Run time error
We cannot assign any string constant in null pointer by strcpy function.
6. What will be output of following program? #include int main(){ int huge *a =(int huge *)0x59990005; int huge *b =(int huge *)0x59980015; if(a == b) printf("power of pointer"); else printf("power of c"); return 0; }
(A) power of pointer (B) power of c (C) power of cpower of c (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: power of pointer Turbo C ++4.5: power of c
31/07/2013
C pointers questions
Linux GCC: Compilation error Visual C++: Compilation error
Here
we
are
performing
relational
operation
between
two
huge
addresses. So first of all both a and b will normalize as:
a= (0x5999)* (0x10) + (0x0005) =0x9990+0x0005=0x9995
b= (0x5998)* (0x10) + (0x0015) =0x9980+0x0015=0x9995
Here both huge addresses are representing same physical address. So a==b is true.
7. What will be output of following program? #include #include int main(){ register a = 25; int far *p; p=&a; printf("%d ",*p); return 0; }
(A) 25 (B) 4 (C) Address (D) Compilation error (E) None of above Output
31/07/2013
C pointers questions
E x p l a n a t i o n : Turbo C++ 3.0: Compilation error Turbo C ++4.5: Compilation error Linux GCC: Compilation error Visual C++: Compilation error
Register data type stores in CPU. So it has not any memory address. Hence we cannot write &a.
8. What will be output of following program? #include #include int main(){ char far *p,*q; printf("%d %d",sizeof(p),sizeof(q)); return 0; }
(A) 2 2 (B) 4 4 (C) 4 2 (D) 2 4 (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 4 4
31/07/2013
C pointers questions
Turbo C ++4.5: 4 4 Linux GCC: Compilation error Visual C++: Compilation error
p is far pointer which size is 4 byte.
By default q is near pointer which size is 2 byte.
9. What will be output of following program? #include int main(){ int a = 10; void *p = &a; int *ptr = p; printf("%u",*ptr); return 0; }
(A) 10 (B) Address (C) 2 (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 10
31/07/2013
C pointers questions
Turbo C ++4.5: 10 Linux GCC: 10 Visual C++: 10
Void pointer can hold address of any data type without type casting. Any pointer can hold void pointer without type casting.
10. What will be output of following program? #include #include int main(){ int register a; scanf("%d",&a); printf("%d",a); return 0; } //if a=25
(A) 25 (B) Address (C) 0 (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: Compilation error
31/07/2013
C pointers questions
Turbo C ++4.5: Compilation error
Linux GCC: Compilation error
Visual C++: Compilation error
Register data type stores in CPU. So it has not any memory address. Hence we cannot write &a.
11. What will be output of following program? #include int main(){ char arr[10]; arr = "world"; printf("%s",arr); return 0; }
(A) world (B) w (C) Null (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: Compilation error
Turbo C ++4.5: Compilation error
31/07/2013
C pointers questions
Linux GCC: Compilation error
Visual C++: Compilation error
Compilation error Lvalue required
Array name is constant pointer and we cannot assign any value in constant data type after declaration.
12. What will be output of following program? #include #include int main(){ int a,b,c,d; char *p = ( char *)0; int *q = ( int *q)0; float *r = ( float *)0; double *s = 0; a = (int)(p+1); b = (int)(q+1); c = (int)(r+1); d = (int)(s+1); printf("%d %d %d %d",a,b,c,d); return 0; }
(A) 2 2 2 2 (B) 1 2 4 8 (C) 1 2 2 4 (D) Compilation error (E) None of above Output
31/07/2013
C pointers questions
E x p l a n a t i o n :
Turbo C++ 3.0: 1 2 4 8 Turbo C ++4.5: Compilation error Linux GCC: Compilation error Visual C++: Compilation error
Address + 1 = next address
Since initial address of all data type is zero. So its
next address will be size of data type.
13. What will be output of following program? #include #include int main(){ int a = 5,b = 10,c; int *p = &a,*q = &b; c = p - q; printf("%d" , c); return 0; }
(A) 1 (B) 5 (C) -5
31/07/2013
C pointers questions
(D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 1 Turbo C ++4.5: 1 Linux GCC: 1 Visual C++: 2
Difference of two same type of pointer is always one.
14. What will be output of following program? #include unsigned long int (* avg())[3]{ static unsigned long int arr[3] = {1,2,3}; return &arr; } int main(){ unsigned long int (*ptr)[3]; ptr = avg(); printf("%d" , *(*ptr+2)); return 0; }
(A) 1 (B) 2 (C) 3 (D) Compilation error
31/07/2013
C pointers questions
(E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 3 Turbo C ++4.5: 3 Linux GCC: 3 Visual C++: 3
15. What will be output of following program? #include int main(){ int * p , b; b = sizeof(p); printf("%d" , b); return 0; }
(A) 2 (B) 4 (C) 8 (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 2 or 4
Turbo C ++4.5: 2 or 4
31/07/2013
C pointers questions
Linux GCC: 4
Visual C++: 4
since in this question it has not written p is which type of pointer. So
its
output
will
depend
upon
which
Default memory model is small.
16. What will be output of following program? #include int main(){ int i = 5 , j; int *p , *q; p = &i; q = &j; j = 5; printf("%d %d",*p,*q); return 0; }
(A) 5 5 (B) Address Address (C) 5 Address (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 5 5 Turbo C ++4.5: 5 5
memory
model
has
selected.
31/07/2013
C pointers questions
Linux GCC: 5 5 Visual C++: 5 5
17. What will be output of following program? #include int main(){ int i = 5; int *p; p = &i; printf(" %u %u", *&p , &*p); return 0; }
(A) 5 Address (B) Address Address (C) Address 5 (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: Address Address Turbo C ++4.5: Address Address Linux GCC: Address Address Visual C++: Address Address
Since * and & always cancel to each other.
31/07/2013
C pointers questions
i.e. *&a = a
so *&p = p which store address of integer i
&*p = &*(&i) //since p = &i
= &(*&i)
= &i
So second output is also address of i
18. What will be output of following program? #include int main(){ int i = 100; printf("value of i : %d addresss of i : %u",i,&i); i++; printf("\nvalue of i : %d addresss of i : %u",i,&i); return 0; }
(A) value of i : 100 addresss of i : Address value of i : 101 addresss of i : Address
(B) value of i : 100 addresss of i : Address value of i : 100 addresss of i : Address
(C) value of i : 101 addresss of i : Address value of i : 101 addresss of i : Address
(D) Compilation error (E) None of above
31/07/2013
C pointers questions Output
E x p l a n a t i o n : Turbo C++ 3.0:
value of i : 100 addresss of i : Address
value of i : 101 addresss of i : Address
Turbo C ++4.5:
value of i : 100 addresss of i : Address
value of i : 101 addresss of i : Address
Linux GCC:
value of i : 100 addresss of i : Address
value of i : 101 addresss of i : Address
Visual C++:
value of i : 100 addresss of i : Address value of i : 101 addresss of i : Address
Within the scope of any variable, value of variable may change but its address will never change in any modification of variable.
19.
31/07/2013
C pointers questions
What will be output of following program? #include int main(){ char far *p =(char far *)0x55550005; char far *q =(char far *)0x53332225; *p = 25; (*p)++; printf("%d",*q); return 0; }
(A) 25 (B) Address (C) Garbage (D) Compilation error (E)None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 26 Turbo C ++4.5: Compilation error Linux GCC: Compilation error Visual C++: Compilation error
Far
address
of
p
and
q
are
representing
Physical address of
0x55550005 = 0x5555 * ox10 + ox0005 = 0x55555
Physical address of
same
physical
address.
31/07/2013
C pointers questions
0x53332225 = 0x5333 * 0x10 + ox2225 = 0x55555
*p = 25, means content at memory location 0x55555 is assigning value 25
(*p)++ means to increase the content by one at memory the location 0x5555 so now content of memory location at 0x55555 is 26
*q also means content at memory location 0x55555 which is 26
20. What will be output of following program? #include int main(){ int i = 3; int *j; int **k; j = &i; k = &j; printf("%u %u %u",i,j,k); return 0; }
(A) 3 Address 3 (B) 3 Address Address (C) 3 3 3 (D) Compilation error (E) None of above Output
E x p l a n a t i o n : Turbo C++ 3.0: 3 Address Address
31/07/2013
C pointers questions
Turbo C ++4.5: 3 Address Address
Linux GCC: 3 Address Address
Visual C++: 3 Address Address
Here 6024, 8085, 9091 is any arbitrary address, it may be different.
Pointer Tutorial More pointer questions Array questions String questions Function questions +5 Recommend this on Google
12 comments:
31/07/2013
C pointers questions bartek 2/15/12, 2:43 AM
According to Q13, the explanation is wrong. First of all, the answer in this question depends on how this 2 variables are allocated on stack, I mean if they're two consecutive values or they're apart from each other in memory. For example on my Visual C++ in such a declaration: int a = 5, b = 10; Difference between addresses of a and b is 12 bytes, so if they' re 4 bytes ints the difference is &a - &b = 3. Difference between two pointers of same type isn't always 1 !!!!!! It depends on they relative location in memory !!!!!! Reply Replies Lokesh Sharma 6/25/13, 7:55 PM
Difference of two pointers of same type is 1 and not the size of their data types. Try this code on codepad.org which uses linux gcc compiler. Also, the difference between two pointers of same type is not always 1 as mentioned. Try this code #include #include int main(){ int a = 5,b = 10,c = 100, d = -9; int *p = &a,*q = &d; c = p - q; printf("%d" , c); return 0; } Reply
Unknown 8/7/12, 12:12 PM
according to Q14,there is no explanation please provide explanation,it is very good for beginners...otherwise everthing fine... ITS VERY GOOD JOB..PL EASE KEEP IT UP Reply
Laxmipooja Anegun di 8/20/12, 10:55 PM
will this program face dangling pointer problem??? #include unsigned long int (* avg())[3]{ static unsigned long int arr[3] = {1,2,3}; return &arr; }
31/07/2013
C pointers questions
int main(){ unsigned long int (*ptr)[3]; ptr = avg(); printf("%d" , *(*ptr+2)); return 0; } Reply
Anonymous 9/14/12, 12:00 AM
i want a C program that takes the input – the mark sheets of N number of students. for examle; ●Enter the marks for student 1 student name: aaa roll number: 24 marks obtained in 5 subjects: 56 89 87 76 98 ●Enter the roll number of the student to be searched: 22 ●The details of student with roll number 22: name: bbb total marks obtained: 293 Reply
Anonymous 9/14/12, 12:03 AM
i need a C program that accepts the roll numbers and names of N students from the user … and prints those in the alphabetical order of the name, along with the roll numbers. Enter the number of students: 3 Enter the name of student #1: vinay Enter vinay’s roll number: 12 Enter the name of student #2: anand Enter anand’s roll number: 14 Enter the name of student #3: kumar Enter kumar’s roll number: 11 The list of students, in sorted order of names is given below: anand (14) kumar (11) vinay (12) Reply
sahil 9/14/12, 12:50 AM
what is O/P of this n please also tell whats the concept behind that o/p? #include main() {
31/07/2013
C pointers questions
int a[2][2][2] = { {10,2,3,4}, {5,6,7,8} }; int *p,*q; p=&a[2][2][2]; *q=***a; printf("%d----%d",*p,*q); } Reply Replies Lokesh Sharma 6/25/13, 7:57 PM
should give an error as q doesn't point to a location. Reply
Neeru Nagi 3/22/13, 5:52 PM
when i put a=908 why i get -116 as output for p rogram 1 Reply
Neeru Nagi 3/22/13, 5:53 PM
ques no 2 is producing error for pointer r Reply
Neeru Nagi 3/22/13, 5:55 PM
there is some problem in 9 it is giving error(cant convert void to int) ..?? Reply
Roja 4/22/13, 12:25 AM
7 Question output 25 in C++ 3.0 Reply
► Tes t Ques tions
► Ques ti ons A ns wers
► C+ + Language
SHARE IT Share this on Facebook Tweet this View stats (NEW) Appointment g adget >>
MUST VISIT
↑ Grab this Headline Animator
C LOVER COMMUNITY
► C P rogram mi ng P DF