Session 5


Published on

C Language Slides

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Session 5

  1. 1. Storage classes• A variable in C can have any one of the four storage classes. 1. Automatic variables. 2. External variables. 3. Static variables. 4. Register variables.
  2. 2. AUTOMATIC VARIABLES (LOCAL/INTERNAL)• Automatic variables are declared inside a function in which they are to be utilized.• They are created when a function is called and destroyed automatically when the function is exited.• Eg:main() { int number; }• We may also use the keyword auto to declare automatic variables explicitly.
  3. 3. EXTERNAL VARIABLES• Variables that are both alive and active throughout the entire program are known as external variables. They are also known as global variables. extern float length = 7.5; void main() { } function1( ) { }The keyword extern can be used for explicit declarations of external variables.
  4. 4. STATIC VARIABLES• As the name suggests, the value of a static variable persists until the end of the program. A variable can be declared static using the keyword static.• Eg:• 1) static int x;• 2) static int y;
  5. 5. REGISTER VARIABLES• We can tell the compiler that a variable should be kept in one of the machine’s registers, instead of keeping in the memory.• Since a register access is much faster than a memory access, keeping the frequently accessed variables in the register will lead to faster execution of programs.• This is done as follows: register int count;
  6. 6. POINTERS• A pointer is a variable that represents the location of a data item, such as a variable or an array element.• A pointer is a memory address.• In the simplest term pointer is a nearly integer variable which stores a memory address of a computer which may contain other variable or even another pointer.
  7. 7. Concept of Address and Pointers• Memory can be ADDR1 ADDR2 Contents1 conceptualized as a ADDR3 ADDR4 linear set of data ADDR5 ADDR6 locations. * * *• Variables reference the ADDR11 Contents11 contents of a locations * * ADDR16 Contents16• Pointers have a value of the address of a given location
  8. 8. Pointer Variable• Declaring a pointer variable is quite similar to declaring an normal variable all you have to do is to insert a star * operator before it.• General form of pointer declaration is - type* name; For Example int * variable1;
  9. 9. • Say you declare a variable named foo. int foo;• Now lets declare another variable of pointer type int *foo_ptr = &foo; foo_ptr is declared as a pointer to int. We have initialized it to point to foo.
  10. 10. Use of & and *• When is & used?• When is * used?• & -- "address operator" which gives or produces the memory address of a data variable.• * -- "dereferencing operator" which provides the contents in the memory location specified by a pointer
  11. 11. #include <stdio.h>void main (void){ int count = 10, x; int *int_pointer; int_pointer = &count; x = *int_pointer; printf ("count = %d, x = %dn", count, x);}
  12. 12. Using Pointers in Expressions #include <stdio.h> void main () { int i1, i2; int *p1; i1 = 5; p1 = &i1; i2 = *p1 + 20;printf ("i1 = %d, i2 = %d, *p1 = %d ", i1, i2, *p1);}
  13. 13. Pointer arithmetic• Pointers can be added and subtracted.• However pointer arithmetic is quite meaningless unless performed on arrays.• Addition and subtraction are mainly for moving forward and backward in an array.
  14. 14. #include <stdio.h>void main(){ int ArrayA[3]={1,2,3}; int *ptr; ptr=ArrayA; printf("address: %p - array value:%d “,ptr,*ptr); ptr++; printf("address: %p – array value:%d”,ptr,*ptr);}
  15. 15. Pointers and Functions• Pointers can be used to pass addresses of variables to called functions, thus allowing the called function to alter the values stored there.• There are two mechanism to call a function 1) Pass by Value 2) Pass By Reference
  16. 16. Pass by Value#include <stdio.h>void main ( ){ int a = 5, b = 6; Results: printf("a=%d b=%dn",a,b) ; a=5 b=6 swap (a, b) ; a=6 b=5 printf("a=%d b=%dn",a,b) ; a=5 b=6}void swap(int a, int b){ int temp; temp= a; a= b; b = temp ; printf ("a=%d b=%dn", a, b);}
  17. 17. Pass by Reference#include <stdio.h>void main ( ){ int a = 5, b = 6; Results: printf("a=%d b=%dn",a,b) ; a=5 b=6 swap (&a, &b) ; a=6 b=5 printf("a=%d b=%dn",a,b) ; a=6 b=5}void swap(int *a, int *b){ int temp; temp=*a; *a=*b; *b = temp ; printf ("a=%d b=%dn", *a, *b);}