w3resource

C Exercises: Demonstrate the use of & and * operator

C Pointer : Exercise-3 with Solution

Write a program in C to demonstrate the use of the &(address of) and *(value at address) operators.

Pictorial Presentation:

C Exercises: Pictorial: Demonstrate the use of & and * operator.

Sample Solution:

C Code:

#include <stdio.h>
void main()
{
  int m=300;
  float fx = 300.60;
  char cht = 'z';
  
   printf("\n\n Pointer : Demonstrate the use of & and * operator :\n"); 
   printf("--------------------------------------------------------\n");

 
  int *pt1;
  float *pt2;
  char *pt3;
  pt1= &m;
  pt2=&fx;
  pt3=&cht;
  printf ( " m = %d\n",m);
  printf ( " fx = %f\n",fx);
  printf ( " cht = %c\n",cht);
  printf("\n Using & operator :\n"); 
  printf("-----------------------\n");  
  printf ( " address of m = %p\n",&m);
  printf ( " address of fx = %p\n",&fx);
  printf ( " address of cht = %p\n",&cht);
  printf("\n Using & and * operator :\n"); 
  printf("-----------------------------\n"); 
  printf ( " value at address of m = %d\n",*(&m));
  printf ( " value at address of fx = %f\n",*(&fx));
  printf ( " value at address of cht = %c\n",*(&cht));
  printf("\n Using only pointer variable :\n"); 
  printf("----------------------------------\n"); 
  printf ( " address of m = %p\n",pt1);
  printf ( " address of fx = %p\n",pt2);
  printf ( " address of cht = %p\n",pt3);
  printf("\n Using only pointer operator :\n"); 
  printf("----------------------------------\n"); 
  printf ( " value at address of m = %d\n",*pt1);
  printf ( " value at address of fx= %f\n",*pt2);
  printf ( " value at address of cht= %c\n\n",*pt3);
}

Sample Output:

Pointer : Demonstrate the use of & and * operator :                                                          
--------------------------------------------------------                                                      
 m = 300                                                                                                      
 fx = 300.600006                                                                                              
 cht = z                                                                                                      
                                                                                                              
 Using & operator :                                                                                           
-----------------------                                                                                       
 address of m = 0x7fff71cd0b38                                                                                
 address of fx = 0x7fff71cd0b3c                                                                               
 address of cht = 0x7fff71cd0b37                                                                              
                                                                                                              
 Using & and * operator :                                                                                     
-----------------------------                                                                                 
 value at address of m = 300                                                                                  
 value at address of fx = 300.600006                                                                          
 value at address of cht = z              

 Using only pointer variable :                                                                                
----------------------------------                                                                            
 address of m = 0x7fff71cd0b38                                                                                
 address of fx = 0x7fff71cd0b3c                                                                               
 address of cht = 0x7fff71cd0b37                                                                              
                                                                                                              
 Using only pointer operator :                                                                                
----------------------------------                                                                            
 value at address of m = 300                                                                                  
 value at address of fx= 300.600006                                                                           
 value at address of cht= z 
 

Flowchart:

Flowchart: Demonstrate the use of & and * operator

C Programming Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a program in C to demonstrate how to handle the pointers in the program.
Next: Write a program in C to add two numbers using pointers.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

Returning an array using C

You can't return arrays from functions in C. You also can't (shouldn't) do this:

char *returnArray(char array []){
 char returned [10];
 //methods to pull values from array, interpret them, and then create new array
 return &(returned[0]); //is this correct?
} 

returned is created with automatic storage duration and references to it will become invalid once it leaves its declaring scope, i.e., when the function returns.

You will need to dynamically allocate the memory inside of the function or fill a preallocated buffer provided by the caller.

Dynamically allocate the memory inside of the function (caller responsible for deallocating ret)

char *foo(int count) {
    char *ret = malloc(count);
    if(!ret)
        return NULL;

    for(int i = 0; i < count; ++i) 
        ret[i] = i;

    return ret;
}

Call it like so:

int main() {
    char *p = foo(10);
    if(p) {
        // do stuff with p
        free(p);
    }

    return 0;
}

Ref : https://bit.ly/3yFIeao





We are closing our Disqus commenting system for some maintenanace issues. You may write to us at reach[at]yahoo[dot]com or visit us at Facebook