POINTERS IN C
Tags: computerscience, coding, c, ptr
Published: 2021-11-25 17:46:44

 __POINTERS IN C__

•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.

• A pointer is a variable whose value is the address of another variable, i.e., direct address of the memory location. Like any variable or constant, you must declare a pointer before using it to store any variable address.

• The general form of a pointer variable declaration is:
type *var-name;

Here,
   -- type is the pointer's base type (it must be a valid C
      datatype).
   -- var-name is the name of the pointer variable.
   -- * used to declare a pointer.

• Some of the valid pointer declarations are as follows −
   int ip; / pointer to an integer /
   double *dp; / pointer to a double /
   float *fp; / pointer to a float /
   char *ch / pointer to a character */

• The actual data type of the value of all pointers, whether 
integer, float, character, or otherwise, is the same, a long hexadecimal number that represents a memory address. The only difference between pointers of different data types is the data type of the variable or constant that the pointer points to.

__USAGE OF POINTERS__

(a) We define a pointer variable.
(b) Assign the address of a variable to a pointer.
(c) Finally access the value at the address available in the pointer variable.

• This is done by using unary operator * that returns the value of the variable located at the address specified by its operand.

• _Example:_
   #include
   int main ()
   {
   int var = 20; /* actual variable declaration /
   int *ip; / pointer variable declaration /
   ip = &var; / store address of var in pointer variable*/
   printf("Address of var variable: %x\n", &var );
   /* address stored in pointer variable /
   printf("Address stored in ip variable: %x\n", ip );
   / access the value using the pointer */
   printf("Value of *ip variable: %d\n", *ip );
   return 0;
   }

• When the above code is compiled and executed, it produces the following result −
   -- Address of var variable: bffd8b3c
   -- Address stored in ip variable: bffd8b3c
   -- Value of *ip variable: 20

__NULL POINTERS__

• It is always a good practice to assign a NULL value to a pointer variable in case you do not have an exact address to be assigned. This is done at the time of variable declaration. A pointer that is assigned NULL is called a null pointer.

• The NULL pointer is a constant with a value of zero defined in several standard libraries. Consider the following program −

• _Example:_
   #include
   int main ()
   {
   int *ptr = NULL;
   printf("The value of ptr is : %x\n", ptr );
   return 0;
   }

• When the above code is compiled and executed, it produces the following result −
   -- The value of ptr is 0
   -- In most of the operating systems, programs are not permitted
      to access memory at address 0 because that memory is 
      reserved by the operating system.
   -- However, the memory address 0 has special significance; it
      signals that the pointer is not intended to point to an
      accessible memory location. But by convention, if a pointer
      contains the null (zero) value, it is assumed to point to
      nothing.
   -- To check for a null pointer, you can use an 'if' statement 
      as follows −
         if(ptr)     /* succeeds if p is not null */
         if(!ptr)    /* succeeds if p is null */