UNIT - 4 FUNCTIONS AND POINTERS
FUNCTION Functions is a sub-program that contains one or more statements and it performs some task when called.
Types Functions User-Defined Functions Pre-Defined Functions
Pre-Defined Functions The pre-defined functions or library functions are built-in functions. The user can use the functions, but cannot modify the function. Example: sqrt()
User-Defined Functions The functions defined by the user for their requirement are called user-defined functions. Whenever it is needed, The user can modify the function. Example: sum(a,b)
Advantage of User-Defined Functions The length of the source program can be reduced. It is easy to locate error. It avoid coding of repeated instructions.
Elements of User-Defined Function Function declaration Function definition Function call
Function Syntax datatype function_name (parameters list) { local variable declaration; ………………………… body of the function; ………………………… return(expression); }
How Function Works Once a function is called the control passes to the called function. The working of calling function is temporarily stopped. When the execution of called function is completed then the control return back to the calling function and execute the next statement.
Parameters Actual Parameter These are the parameters transferred from the calling function to the called function. Formal Parameter These are the parameters which is used in the called function.
return Statement The return statement may or may not send some values to the calling function. Syntax: return; (or) return(expression);
Function Prototypes Function with no arguments and no return values. Function with arguments and no return values. Function with arguments and return values. Function with no arguments and with return values.
Function with no arguments and no return values Here no data transfer take place between the calling function and the called function. These functions act independently, i.e. they get input and display output in the same block.
Example #include void main() //calling function { void add(void); add(); } void add()//called function { int a,b,c; printf("\nEnter two number:"); scanf("%d%d",&a,&b); c=a+b; printf("\nSum is:%d",c); }
Output Enter two number:3 4 Sum is:7
Function with arguments and no return values Here data transfer take place between the calling function and the called function. It is a one way data communication, i.e. the called program receives data from calling program but it does not return any value to the calling program.
Example #include void main() { int a,b; void add(int,int); printf("\nEnter two number:"); scanf("%d%d",&a,&b); add(a,b); } void add(int x,int y) //function with arguments { int z; z=x+y; printf("\nSum is:%d",z); }
Output Enter two number:2 4 Sum is:6
Example #include void main() { int a,b; void add(int a,int b); printf("\nEnter two number:"); scanf("%d%d",&a,&b); add(a,b); } void add(int x,int y) //function with arguments { int z; z=x+y; printf("\nSum is:%d",z); }
Output Enter two number:2 4 Sum is:6
Function with arguments and return values Here data transfer take place between the calling function and the called function as well as between called function and calling function. It is a two way data communication, i.e. the called program receives data from calling program and it return some value to the calling program.
Example #include void main() { int a,b,c; int add(int,int); printf("\nEnter two number:"); scanf("%d%d",&a,&b); c=add(a,b); printf("\nSum is:%d",c); } int add(int x,int y) { int z; z=x+y; return(z); }
Output Enter two number:6 7 Sum is:13
Function with no arguments and with return values Here data transfer take place between the called function and the calling function. It is a one way data communication, i.e. the called program does not receives data from calling program but it return some value to the calling program.
#include void main() { int add(),d; d=add(); printf("\nSum is:%d",d); } int add() //function wit no argument { int a,b,c; printf("\nEnter two number:"); scanf("%d%d",&a,&b); c=a+b; return(c); }
Output Enter two number:5 8 Sum is:13
Parameter Passing Methods Call by value Call by reference
Call by value Actual argument passed to the formal argument. Any changes to the formal argument does not affect the actual argument.
Example #include void main() { int x,y,change(int,int); printf("\nEnter value of x:"); scanf("%d",&x); printf("\nEnter value of y:"); scanf("%d",&y);
change(x,y); printf("\n\nValues in the Main()-->x=%d,y=%d",x,y); } int change(int a,int b) { int c; c=a; a=b; b=c; printf("\nValues in the Fuction -->x=%d,y=%d",a,b); }
Output Enter value of x:5 Enter value of y:6 Values in the Fuction -->x=6,y=5 Values in the Main()-->x=5,y=6
Call by reference Instead of passing value, the address of the argument will be passed. Any changes to the formal argument will affect the actual argument.
Example #include void main() { int x,y,change(int*,int*); printf("\nEnter value of x:"); scanf("%d",&x); printf("\nEnter value of y:"); scanf("%d",&y);
change(&x,&y); printf("\n\nValues in the Main()-->x=%d,y=%d",x,y); } int change(int *a,int *b) { int c; c=*a; *a=*b; *b=c; printf("\nValues in the Function -->x=%d,y=%d",*a,*b); }
Output Enter value of x:5 Enter value of y:6 Values in the Function -->x=6,y=5 Values in the Main()-->x=6,y=5
Recursion It is a process of calling the same function itself again and again until some condition is satisfied. Syntax: func1() { ……….. func1(); }
Example #include void main() { int a; int rec(int); printf("\nEnter the number:"); scanf("%d",&a); printf("The factorial of %d! is %d",a,rec(a)); }
int rec(int x) { int f; if(x==1) return(1); else f=x*rec(x-1); return(f); } Output: Enter the number:5 The factorial of 5! is 120
Example: Working of 3!
Tower of Honoi
Library Function It is pre-defined function. The library function provides functions like mathematical, string manipulation etc,.
Example sqrt(x): It is used to find the square root of x Example: sqrt(36) is 6 abs(x): It is used to find the absolute value of x Example: abs(-36) is 36 pow(x,y): It is used to find the value of x y Example: pow(5,2) is 25 ceil(x): It is used to find the smallest integer greater than or equal to x Example: ceil(7.7) is 8
rand(): It is used to generate a random number. sin(x): It is used to find the sine value of x Example: sin(30) is 0.5 cos(x): It is used to find the cosine value of x Example: cos(30) is 0.86 tan(x): It is used to find the tan value of x Example: tan(30) is 0.577
toascii(x): It is used to find the ASCII value of x Example: toascii(a) is 97 toupper(x): It is used to convert lowercase character to uppercase. Example: toupper(‘a’) is A toupper(97) is A tolower(x): It is used to convert uppercase character to lowercase. Example: tolower(‘A’) is a
Example: #include void main() { int x,y=2; printf("\nEnter the number:"); scanf("%d",&x); printf("\nThe squareroot of %d is %f",x,sqrt(x)); printf("\nThe value of %d power%dis%f ",x,y,pow(6,2));
printf("\nThe ceiling of 6.7 is %f",ceil(6.7)); printf("\nThe floor of 6.7 is %f",floor(6.7)); printf("\nThe absolute value of -6 is %d",abs(-6)); printf("\nThe value of sin 45 is %f",sin(45)); printf("\nThe uppercase of 'a' is %c",toupper('a')); printf("\nThe uppercase of 97 is %c",toupper(97)); getch(); }
Output: Enter the number:6 The squareroot of 6 is The value of 6 power 2 is The ceiling of 6.7 is The floor of 6.7 is The absolute value of -6 is 6 The value of sin 45 is The uppercase of 'a' is A The uppercase of 97 is A
Pointers Pointer is a variable that contains the memory address of another variable.
Example: x=5 x Variable 1002 Address 5 Value
Example #include void main() { int x=5; printf("\n The Address of x = %u",&x); printf("\n The Value of x = %d",x); } Output The Address of x = 8714 The Value of x = 5
Pointer Declaration Syntax data-type *pointer-name; data-type - Type of the data to which the pointer points. pointer-name - Name of the pointer Example: int *a;
Accessing Variable through Pointer If a pointer is declared and assigned to a variable, then the variable can be accessed through the pointer. Example: int *a; x=5; a=&x;
Example #include void main() { int x=5; int *a; a=&x; printf("\n The Value of x = %d",x); printf("\n The Address of x = %u",&x); printf("\n The Value of a = %d",a); printf("\n The Value of x = %d",*a); }
Output The Value of x = 5 The Address of x = 8758 The Value of a = 8758 The Value of x = 5
Example: #include void main() { int y=10; int *a; a=&y; printf("\n The Value of y = %d",y); printf("\n The Address of y = %u",&y); printf("\n The Value of a = %d",a); printf("\n The Address of a = %u",&a); }
ay 5001 Variable Value Address
Output The Value of y = 10 The Address of y = 5001 The Value of a = 5001 The Address of a = 8000
Null Pointer A pointer is said to be null pointer if zero is assigned to the pointer. Example int *a,*b; a=b=0;
Pointer to Pointer Here one pointer stores the address of another pointer variable. Example: int x=10,*a,**b; a=&x; b=&a;
ax 5001 Variable Value Address b
Example #include void main() { int a=10; int *b,**c; b=&a; c=&b; printf("\n The Value of a = %d",a); printf("\n The Address of a = %u",&a); printf("\n The Value of b = %d",b); printf("\n The Address of b = %u",&b); printf("\n The Value of c = %d",c); printf("\n The Address of c = %u",&c); }
Output The Value of a = 10 The Address of a = 5001 The Value of b = 5001 The Address of b = 8000 The Value of c = 8000 The Address of c = 9000
Pointers and Functions Call by Value Call by Reference
Call by value Actual argument passed to the formal argument. Any changes to the formal argument does not affect the actual argument.
Example #include void main() { int x,y,swap(int,int); printf("\nEnter value of x:"); scanf("%d",&x); printf("\nEnter value of y:"); scanf("%d",&y);
change(x,y); printf("\n\nValues in the Main()-->x=%d,y=%d",x,y); } int swap(int a,int b) { int c; c=a; a=b; b=c; printf("\nValues in the Function -->x=%d,y=%d",a,b); }
Output Enter value of x:5 Enter value of y:6 Values in the Function -->x=6,y=5 Values in the Main()-->x=5,y=6
Call by reference Instead of passing value, the address of the argument will be passed. Any changes to the formal argument will affect the actual argument.
Example #include void main() { int x,y,change(int*,int*); printf("\nEnter value of x:"); scanf("%d",&x); printf("\nEnter value of y:"); scanf("%d",&y);
change(&x,&y); printf("\n\nValues in the Main()-->x=%d,y=%d",x,y); } int change(int *a,int *b) { int c; c=*a; *a=*b; *b=c; printf("\nValues in the Function -->x=%d,y=%d",*a,*b); }
Output Enter value of x:5 Enter value of y:6 Values in the Function -->x=6,y=5 Values in the Main()-->x=6,y=5
Pointer to Array The elements of the array can also be accessed through a pointer. Example int a[3]={2,3,7}; int *b; b=a;
Example: #include void main() { int a[3]={2,3,7}; int *b; b=a; printf("\n The Value of a[0] = %d",a[0]); printf("\n The Address of a[0] = %u",&a[0]); printf("\n The Value of b = %d",b); }
ba[0] 8744 Variable Value Address
Output The Value of a[0] = 2 The Address of a[0] = 8744 The Value of b = 8744
Example #include void main() { int a[5]={2,3,7,9,10}; int i; for(i=0;i<5;i++) { printf("\n The Value of a[%d] = %d",i,a[i]); printf("\n The Address of a[%d] = %u",i,&a[i]); }
a[0] a[1]a[2] a[3] a[4] Array Value Address
Output The Value of a[0] = 2 The Address of a[0] = 8724 The Value of a[1] = 3 The Address of a[1] = 8726 The Value of a[2] = 7 The Address of a[2] = 8728 The Value of a[3] = 9 The Address of a[3] = 8730 The Value of a[4] = 10 The Address of a[4] = 8732
Example #include void main() { int a[5]={1,2,3,4,5}; int i,sum=0; int *b; b=a; for(i=0;i<5;i++) { sum=sum + *b; b++;//b=b+1 } printf("\n The Sum is %d",sum); }
Output The Sum is 15
Pointer and Structures Syntax: struct structure_name { structure element1; structure element2; ……………………. }variable,*ptr;
Example: struct stud { int sno; char name[10]; int mark; }; struct stud *s;
Example #include struct stud { int regno; char name[10]; int m1; int m2; int m3; }; struct stud s; struct stud *t;
void main() { float tot,avg; t=&s; printf("\nEnter the student regno,name,m1,m2,m3:"); scanf("%d%s%d%d%d",&s.regno,&s.name,&s.m1,&s.m2,& s.m3); tot=s.m1+s.m2+s.m3; avg=tot/3; printf("\nThe student Details are:"); printf("\n%d\t%s\t%f\t%f",s.regno,s.name,tot,avg); printf("\n%d\t%s\t%f\t%f",t->regno,t->name,tot,avg); }
Output Enter the student regno,name,m1,m2,m3:1 aaa The student Details are: 1 aaa
Command Line Argument It allows the user to pass some information to the program while running the program.
Example #include void main(int argc,char argv[]) { printf("\n The Argument is %s",argv[0]); getch(); }
Output C:\tc>a The Argument is C:\TC\A.EXE
String Palindrome #include void main() { char s1[15],s2[15]; printf("\nenter the string:"); scanf("%s",s1); strcpy(s2,s1); strrev(s1);
if(strcmp(s1,s2)==0) printf("\n The string is palindrome"); else printf("\n The string is not a palindrome"); getch(); } Output: enter the string: aba The string is palindrome