Difference between revisions of "Interview Preparation topic : Pointers in C"
Proj user14 (talk | contribs) |
Proj user14 (talk | contribs) |
||
| Line 67: | Line 67: | ||
++*ptr means | ++*ptr means | ||
Increments the Value being Pointed to by ptr | Increments the Value being Pointed to by ptr | ||
| + | |||
| + | 5) What is the difference between constant to pointer and pointer to constant? | ||
| + | -> No Pointer to Constant Constant Pointers | ||
| + | 1 *ptr = 20 Statement is Invalid in Pointer to 1)*ptr = 20 is Absolutely Valid in Constant Pointers i.e Assigning Value is Perfectly legal | ||
| + | Constant i.e Assigning Value is Illegal | ||
| + | 2 ptr ++ Statement is Valid in Pointer to Constant 2)ptr ++ Statement is invalid in Constant Pointers | ||
Revision as of 01:08, 11 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? -> ptr++ means
Increments the Pointer not Value Pointed by It ++*ptr means Increments the Value being Pointed to by ptr
5) What is the difference between constant to pointer and pointer to constant? -> No Pointer to Constant Constant Pointers
1 *ptr = 20 Statement is Invalid in Pointer to 1)*ptr = 20 is Absolutely Valid in Constant Pointers i.e Assigning Value is Perfectly legal
Constant i.e Assigning Value is Illegal
2 ptr ++ Statement is Valid in Pointer to Constant 2)ptr ++ Statement is invalid in Constant Pointers