Difference between revisions of "Interview Preparation topic : Pointers in C"
| Proj user14 (talk | contribs) | Proj user14 (talk | contribs)  | ||
| Line 46: | Line 46: | ||
| <b>Interview Questions on pointers : </b> | <b>Interview Questions on pointers : </b> | ||
| − | 1) What is a NULL  | + | 1) What is a NULL pointer?<br> | 
| − | ->A pointer pointing to nothing is called as a NULL Pointer Eg: int *x=NULL;<br> | + | -> A pointer pointing to nothing is called as a NULL Pointer Eg: int *x=NULL;<br> | 
| − | 2) | + | 2) What is a dangling pointer><br>  | 
| + | -> Dangling Pointer is a pointer that doesn’t point to a valid memory location. Initially the pointer holds a valid address but later the held address is released or freed. | ||
| + | |||
| + | 3) What is a void pointer?<br>. | ||
| + | ->In C General Purpose Pointer is called as void Pointer. It does not have any data type associated with it and can store address of any type of variable | ||
| + |   for eg void *ptr;    // ptr is declared as Void pointer | ||
| + |       char cnum; | ||
| + |       int inum; | ||
| + |       float fnum; | ||
| + |       ptr = &cnum;  // ptr has address of character data | ||
| + |       ptr = &inum;  // ptr has address of integer data | ||
| + |       ptr = &fnum;  // ptr has address of float data | ||
| + | |||
| + | 4) What is the difference between *ptr++ and ++*ptr? | ||
Revision as of 23:59, 10 December 2016
What is a Pointer?
A pointer is a variable which contains the address in memory of another variable. Every variable is a memory location and every memory location has its address defined which can be accessed using ampersand (&) operator, which denotes an address in memory.
Lets Look at the following example:
- include <stdio.h>
int main ()
{
  int  temp;
  int temp1;
  printf("Address of temp variable: %x\n", &temp );
  printf("Address of temp1 variable: %x\n", &temp1 );
  return 0;
}
When the following code is compiled and executed:
Address of temp variable: edf53400
Address of temp1 variable: adf9a5f6
To declare a pointer to a variable do:
type *pointer;
Where type can be int, double, float, char and pointer can be any variable.
Consider the following example:
- include <stdio.h>
int main () {
  int  temp= 100;                                     /* Stores the value 20 in variable temp */
  int  *ptr;                                          /* Declares a pointer variable of type int */
  ip = &temp;                                         /*store address of temp in pointer variable, so now the address of temp will be in ptr */
  printf("Address of temp variable: %x\n", &temp);    /* print the address of variable temp */
  printf("Address stored in ptr variable: %x\n",ptr ); /* prints the address stored in variable ptr */
  printf("Value of *ptr variable: %d\n", *ptr );       /* prints the value stored at address ptr, this is also known as dereferencing of a pointer */
  return 0;
}
When we compile and execute the following code:
Address of temp variable: a54fae34
Address stored in ptr variable: a54fae34
Value of *ptr variable:100
Interview Questions on pointers : 
1) What is a NULL pointer?
-> A pointer pointing to nothing is called as a NULL Pointer Eg: int *x=NULL;
2) What is a dangling pointer>
 
-> Dangling Pointer is a pointer that doesn’t point to a valid memory location. Initially the pointer holds a valid address but later the held address is released or freed.
3) What is a void pointer?
.
->In C General Purpose Pointer is called as void Pointer. It does not have any data type associated with it and can store address of any type of variable
 for eg void *ptr;    // ptr is declared as Void pointer
     char cnum;
     int inum;
     float fnum;
     ptr = &cnum;  // ptr has address of character data
     ptr = &inum;  // ptr has address of integer data
     ptr = &fnum;  // ptr has address of float data
4) What is the difference between *ptr++ and ++*ptr?
 
							