UNIT3.pptx

N
UNIT III
C Functions
1. A function is a group of statements that together perform
a task. Every C program has at least one function, which is
main().
2. You can divide up your code into separate functions.
3. A function declaration tells the compiler about a function's
name, return type, and parameters.
4. A function definition provides the actual body of the
function.
5. The C standard library provides numerous built-in
functions that your program can call. For example, strcat()
to concatenate two strings, memcpy() to copy one memory
location to another location, and many more functions.
C Function Declaration or Signatur
A function declaration tells the compiler about a function
name and how to call the function. The actual body of the
function can be defined separately.
A function declaration has the following parts −
return_type function_name( parameter list );
Example:
int max(int num1, int num2);
NOTE: Parameter names are not important in function
declaration only their type is required, so the following is also
a valid declaration −
int max(int, int);
C Function Definition
The general form of a function definition in C
programming language is as follows −
return_type function_name( parameter list ) {
body of the function
}
Return Type − A function may return a value. The
return_type is the data type of the value the function
returns. Some functions perform the desired
operations without returning a value. In this case, the
return_type is the keyword void.
Function Name − This is the actual name of the
function. The function name and the parameter list
together constitute the function signature.
C Function Definition
Parameters − A parameter is like a placeholder. When
a function is invoked, you pass a value to the
parameter. This value is referred to as actual
parameter or argument. The parameter list refers to
the type, order, and number of the parameters of a
function. Parameters are optional; that is, a function
may contain no parameters.
Function Body − The function body contains a
collection of statements that define what the function
does.
C Function Definition Example
Given below is the source code for a function called max().
This function takes two parameters num1 and num2 and
returns the maximum value between the two −
/* function returning the max between two numbers */
int max(int , int ) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
C Function Call
1. While creating a C function, you give a definition of
what the function has to do. To use a function, you
will have to call that function to perform the defined
task.
2. When a program calls a function, the program control
is transferred to the called function. A called function
performs a defined task and when its return
statement is executed or when its function-ending
closing brace is reached, it returns the program
control back to the main program.
3. To call a function, you simply need to pass the
C Function Call/Parameter passing E
#include <stdio.h>
/* function declaration */
int max(int num1, int num2);
int main () {
/* local variable definition */
int a = 100;
int b = 200;
int ret;
/* calling a function to get max
value */
ret = max(a, b);
printf( "Max value is : %dn", ret
);
return 0;
}
/* function returning the max
between two numbers */
int max(int num1, int num2) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Passing arrays to functions
#include <stdio.h>
/* function declaration */
double getAverage(int arr[], int
size);
int main () {
/* an int array with 5 elements */
int balance[5] = {1000, 2, 3, 17,
50};
double avg;
/* pass pointer to the array as an
argument */
avg = getAverage( balance, 5 ) ;
/* output the returned value */
printf( "Average value is: %f ", avg
);
return 0;
double getAverage(int arr[],
int size)
{
int i;
double avg;
double sum = 0;
for (i = 0; i < size; ++i) {
sum += arr[i];
}
avg = sum / size;
return avg;
}
Passing pointers to functions
#include <stdio.h>
void salaryhike(int *var, int b)
{
*var = *var+b;
}
int main()
{
int salary=0, bonus=0;
printf("Enter the employee current
salary:");
scanf("%d", &salary);
printf("Enter bonus:");
scanf("%d", &bonus);
salaryhike(&salary, bonus);
printf("Final salary: %d", salary);
return 0;
}
OUTPUT:
Enter the employee current
salary:10000
Enter bonus:2000
Final salary: 12000
Call by value in C
1. The call by value method of passing arguments
to a function copies the actual value of an
argument into the formal parameter of the
function. In this case, changes made to the
parameter inside the function have no effect
on the argument.
2. By default, C programming uses call by value
to pass arguments. In general, it means the
code within a function cannot alter the
arguments used to call the function.
Call by value in C Example
#include <stdio.h>
/* function declaration */
void swap(int x, int y);
int main () {
/* local variable definition */
int a = 100;
int b = 200;
printf("Before swap, value of a :
%dn", a );
printf("Before swap, value of b :
%dn", b );
/* calling a function to swap the
values */
swap(a, b);
printf("After swap, value of a :
%dn", a );
/* function definition to swap the
values */
void swap(int x, int y) {
int temp;
temp = x; /* save the value of x
*/
x = y; /* put y into x */
y = temp; /* put temp into y */
return;
}
OUTPUT:
Before swap, value of
a :100
Before swap, value of
b :200
After swap, value of a
:100
Call by reference in C
1. The call by reference method of passing
arguments to a function copies the address of
an argument into the formal parameter.
Inside the function, the address is used to
access the actual argument used in the call. It
means the changes made to the parameter
affect the passed argument.
2. To pass a value by reference, argument
pointers are passed to the functions just like
any other value. So accordingly you need to
declare the function parameters as pointer
Call by reference in C Example
#include <stdio.h>
/* function declaration */
void swap(int *x, int *y);
int main () {
/* local variable definition */
int a = 100;
int b = 200;
printf("Before swap, value of a :
%dn", a );
printf("Before swap, value of b :
%dn", b );
/* calling a function to swap the
values */
swap(&a, &b);
printf("After swap, value of a :
%dn", a );
/* function definition to swap the
values */
void swap(int *x, int *y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
return;
}
OUTPUT:
Before swap, value of
a :100
Before swap, value of
b :200
After swap, value of a
:200
Recursions in C
Recursion is the process of repeating items in a self-similar
way. In programming languages, if a program allows you to
call a function inside the same function, then it is called a
recursive call of the function.
void recursion() {
recursion(); /* function calls itself */
}
int main() {
recursion();
}
Recursive functions are very useful to solve many
mathematical problems, such as calculating the factorial of
a number, generating Fibonacci series, etc.
Recursions in C
Advantages
1. Reduce unnecessary calling of function.
2. Through Recursion one can Solve problems in easy way
while its iterative solution is very big and complex.
Disadvantages
1. Recursive solution is always logical and it is very difficult
to trace.(debug and understand).
2. In recursive we must have an if statement somewhere
to force the function to return without the recursive call
being executed, otherwise the function will never return.
3. Recursion takes a lot of stack space, usually not
considerable when the program is small and running on a
PC.
4. Recursion uses more processor time.
#include <stdio.h>
int factorial(int);
int main()
{
int num;
int result;
printf("Enter a number to find
it's Factorial: ");
scanf("%d", &num);
if (num < 0){
printf("Factorial of negative
number not possiblen");
}
int factorial(int num){
if (num == 0 || num == 1){
return 1;
}
else{
return(num * factorial(num -
1));
}
}
else{
result = factorial(num);
printf("The Factorial of %d is
%d.n", num, result);
}
return 0;
}
Finding factorial of a number using
Finding factorial of a number using
Finding Fibonacci series of a numb
recursion
Finding Fibonacci series of a numb
recursion
#include <stdio.h>
int fibonacci(int i) {
if(i == 0) {
return 0;
}
if(i == 1) {
return 1;
}
return fibonacci(i-1) +
fibonacci(i-2);
}
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("%dtn",
fibonacci(i));
}
return 0;
}
UNIT3.pptx
Write a C Program to calculate p
of a number using recursion
#include <stdio.h>
long int getPower(int b,int p)
{
long int result=1;
if(p==0)
return result;
result=b*(getPower(b,p-1)); //call
function again
return result;
}
int main()
{
int base,power;
long int result;
printf("Enter value of base: ");
printf("Enter value of pow
");
scanf("%d",&power);
result=getPower(base,po
printf("%d to the power o
is: %ldn",base,power,resul
return 0;
}
Write a C Program to count num
of digits in a number using recu
#include <stdio.h>
//function to count digits
int countDigits(int num)
{
static int count=0;
if(num>0)
{
count++;
countDigits(num/10);
}
else
{
return count;
}
}
int main()
{
int number;
int count=0;
printf("Enter a positive integer number: ");
scanf("%d",&number);
count=countDigits(number);
printf("Total digits in number %d is:
%dn",number,count);
return 0;
}
Dynamic Memory Allocation in C
Dynamic Memory Allocation in C
• As you know, you have to declare the size of an
array before you use it. Hence, the array you
declared may be insufficient or more than required
to hold data. To solve this issue, you can allocate
memory dynamically.
• Dynamic memory management refers to manual
memory management. This allows you to obtain
more memory when required and release it when
not necessary.
• Although C inherently does not have any technique
to allocate memory dynamically, there are 4 library
Dynamic Memory Allocation in C
Function Use of Function
malloc()
Allocates requested size of bytes
and returns a pointer to first byte of
allocated space
calloc()
Allocates space for array elements,
initializes to zero and then returns a
pointer to memory
free()
Deallocate the previously allocated
space
Change the size of previously
The name malloc stands for "memory allocation".
The function malloc() reserves a block of memory of
specified size and return a pointer of type void which
can be casted into pointer of any form.
Syntax of malloc()
ptr = (cast-type*) malloc(byte-size)
Here, ptr is pointer of cast-type. The malloc() function
returns a pointer to an area of memory with size of byte
size. If the space is insufficient, allocation fails and
returns NULL pointer.
ptr = (int*) malloc(100 * sizeof(int));
Dynamic Memory Allocation in C
Dynamic Memory Allocation in C
The name calloc stands for "contiguous allocation".
The only difference between malloc() and calloc() is that,
malloc() allocates single block of memory whereas calloc()
allocates multiple blocks of memory each of same size and
sets all bytes to zero.
Syntax of calloc()
ptr = (cast-type*)calloc(n, element-size);
This statement will allocate contiguous space in memory
for an array of n elements. For example:
ptr = (float*) calloc(25, sizeof(float));
Dynamic Memory Allocation in C
Dynamically allocated memory created with
either calloc() or malloc() doesn't get freed
on its own. You must explicitly use free() to
release the space.
syntax of free()
free(ptr);
This statement frees the space allocated in
the memory pointed by ptr.
Dynamic Memory Allocation in C
If the previously allocated memory is
insufficient or more than required, you
can change the previously allocated
memory size using realloc().
Syntax of realloc()
ptr = realloc(ptr, newsize);
Here, ptr is reallocated with size of
newsize.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num, i, *ptr, sum = 0;
printf("Enter number of
elements: ");
scanf("%d", &num);
ptr = (int*) malloc(num *
sizeof(int)); //memory
allocated using malloc
if(ptr == NULL)
{
printf("Error! memory not
allocated.");
printf("Enter elements of
array: ");
for(i = 0; i < num; ++i)
{
scanf("%d", ptr + i);
sum += *(ptr + i);
}
printf("Sum = %d", sum);
free(ptr);
return 0;
}
Dynamic Memory Allocation in C using ma
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num, i, *ptr, sum = 0;
printf("Enter number of
elements: ");
scanf("%d", &num);
ptr = (int*) calloc(num,
sizeof(int));
//memory allocated using calloc
if(ptr == NULL)
{
printf("Error! memory not
allocated.");
printf("Enter elements of
array: ");
for(i = 0; i < num; ++i)
{
scanf("%d", ptr + i);
sum += *(ptr + i);
}
printf("Sum = %d", sum);
free(ptr);
return 0;
}
Dynamic Memory Allocation in C using cal
Dynamic Memory Allocation in C using rea
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *ptr, i , n1, n2;
printf("Enter size of array: ");
scanf("%d", &n1);
ptr = (int*) malloc(n1 * sizeof(int));
printf("Address of previously allocated
memory: ");
for(i = 0; i < n1; ++i)
printf("%ut",ptr + i);
printf("nEnter new size of
array: ");
scanf("%d", &n2);
ptr = realloc(ptr, n2 *
sizeof(int));
for(i = 0; i < n2; ++i)
printf("%ut", ptr + i);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *iVar;
char *cVar;
float *fVar;
iVar=(int
*)malloc(1*sizeof(int));
cVar=(char
*)malloc(1*sizeof(char));
fVar=(float
*)malloc(1*sizeof(float));
printf("Enter character value: "
scanf(" %c",cVar);
printf("Enter float value: ");
scanf("%f",fVar);
printf("Inputted value are: %
%c, %.2fn",*iVar,*cVar,*fVar);
free(iVar);
free(cVar);
free(fVar);
return 0;
}
C program to create memory for int, char and float
variable at run time
C program to input and print text using
Dynamic Memory Allocation
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
char *text;
printf("Enter limit of the text: ");
scanf("%d",&n);
/*allocate memory
dynamically*/
text=(char*)malloc(n*sizeof(char));
printf("Enter text: ");
gets(text);
printf("Inputted text is:
%sn",text);
/*Free Memory*/
free(text);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[30];
int roll;
float perc;
};
int main()
{
struct student *pstd;
pstd=(struct
student*)malloc(1*sizeof(struct
student));
if(pstd==NULL){
printf("Insufficient Memory,
Exiting... n");
return 0;
}
printf("Enter name: ");
gets(pstd->name);
printf("Enter roll number: ");
scanf("%d",&pstd->roll);
printf("Enter percentage: ");
scanf("%f",&pstd->perc);
printf("nEntered details
are:n");
printf("Name: %s, Roll Number:
%d, Percentage: %.2fn",pstd-
>name,pstd->roll,pstd->perc);
return 0;
C program to read and print
the student details using
structure and Dynamic
Memory Allocation
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[30];
int roll;
float perc;
};
int main()
{
struct student *pstd;
int n,i;
printf("Enter total number of elements: ");
scanf("%d",&n);
/*Allocate memory dynamically for n
objetcs*/
pstd=(struct
student*)malloc(n*sizeof(struct student));
if(pstd==NULL)
{
printf("Insufficient Memory, Exiting...
n");
return 0;
}
C program to read and print the N student
details using structure and Dynamic Memory
Allocation
1 von 39

Recomendados

C Programming Language Part 7 von
C Programming Language Part 7C Programming Language Part 7
C Programming Language Part 7Rumman Ansari
465 views23 Folien
function_v1.ppt von
function_v1.pptfunction_v1.ppt
function_v1.pptssuser823678
12 views33 Folien
Unit_5Functionspptx__2022_12_27_10_47_17 (1).pptx von
Unit_5Functionspptx__2022_12_27_10_47_17 (1).pptxUnit_5Functionspptx__2022_12_27_10_47_17 (1).pptx
Unit_5Functionspptx__2022_12_27_10_47_17 (1).pptxvekariyakashyap
13 views27 Folien
unit_2 (1).pptx von
unit_2 (1).pptxunit_2 (1).pptx
unit_2 (1).pptxJVenkateshGoud
12 views56 Folien
Function in c von
Function in cFunction in c
Function in cRaj Tandukar
6.8K views22 Folien
Unit iv functions von
Unit  iv functionsUnit  iv functions
Unit iv functionsindra Kishor
432 views39 Folien

Más contenido relacionado

Similar a UNIT3.pptx

Array Cont von
Array ContArray Cont
Array ContAshutosh Srivasatava
456 views86 Folien
unit_2.pptx von
unit_2.pptxunit_2.pptx
unit_2.pptxVenkatesh Goud
8 views61 Folien
Functions von
FunctionsFunctions
Functionszeeshan841
146 views19 Folien
Functionincprogram von
FunctionincprogramFunctionincprogram
FunctionincprogramSampath Kumar
44 views24 Folien
CH.4FUNCTIONS IN C_FYBSC(CS).pptx von
CH.4FUNCTIONS IN C_FYBSC(CS).pptxCH.4FUNCTIONS IN C_FYBSC(CS).pptx
CH.4FUNCTIONS IN C_FYBSC(CS).pptxSangeetaBorde3
29 views31 Folien
C function von
C functionC function
C functionthirumalaikumar3
493 views26 Folien

Similar a UNIT3.pptx(20)

CH.4FUNCTIONS IN C_FYBSC(CS).pptx von SangeetaBorde3
CH.4FUNCTIONS IN C_FYBSC(CS).pptxCH.4FUNCTIONS IN C_FYBSC(CS).pptx
CH.4FUNCTIONS IN C_FYBSC(CS).pptx
SangeetaBorde329 views
Presentation on function von Abu Zaman
Presentation on functionPresentation on function
Presentation on function
Abu Zaman11.2K views
Function in c program von umesh patil
Function in c programFunction in c program
Function in c program
umesh patil1.3K views
Classes function overloading von ankush_kumar
Classes function overloadingClasses function overloading
Classes function overloading
ankush_kumar1.9K views
Dti2143 chapter 5 von alish sha
Dti2143 chapter 5Dti2143 chapter 5
Dti2143 chapter 5
alish sha736 views

Último

Scope of Biochemistry.pptx von
Scope of Biochemistry.pptxScope of Biochemistry.pptx
Scope of Biochemistry.pptxshoba shoba
133 views55 Folien
MercerJesse2.1Doc.pdf von
MercerJesse2.1Doc.pdfMercerJesse2.1Doc.pdf
MercerJesse2.1Doc.pdfjessemercerail
169 views5 Folien
JiscOAWeek_LAIR_slides_October2023.pptx von
JiscOAWeek_LAIR_slides_October2023.pptxJiscOAWeek_LAIR_slides_October2023.pptx
JiscOAWeek_LAIR_slides_October2023.pptxJisc
96 views8 Folien
AUDIENCE - BANDURA.pptx von
AUDIENCE - BANDURA.pptxAUDIENCE - BANDURA.pptx
AUDIENCE - BANDURA.pptxiammrhaywood
84 views44 Folien
ICS3211_lecture 08_2023.pdf von
ICS3211_lecture 08_2023.pdfICS3211_lecture 08_2023.pdf
ICS3211_lecture 08_2023.pdfVanessa Camilleri
149 views30 Folien
Computer Introduction-Lecture06 von
Computer Introduction-Lecture06Computer Introduction-Lecture06
Computer Introduction-Lecture06Dr. Mazin Mohamed alkathiri
89 views12 Folien

Último(20)

Scope of Biochemistry.pptx von shoba shoba
Scope of Biochemistry.pptxScope of Biochemistry.pptx
Scope of Biochemistry.pptx
shoba shoba133 views
JiscOAWeek_LAIR_slides_October2023.pptx von Jisc
JiscOAWeek_LAIR_slides_October2023.pptxJiscOAWeek_LAIR_slides_October2023.pptx
JiscOAWeek_LAIR_slides_October2023.pptx
Jisc96 views
Structure and Functions of Cell.pdf von Nithya Murugan
Structure and Functions of Cell.pdfStructure and Functions of Cell.pdf
Structure and Functions of Cell.pdf
Nithya Murugan545 views
Create a Structure in VBNet.pptx von Breach_P
Create a Structure in VBNet.pptxCreate a Structure in VBNet.pptx
Create a Structure in VBNet.pptx
Breach_P75 views
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant... von Ms. Pooja Bhandare
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...
Narration lesson plan.docx von TARIQ KHAN
Narration lesson plan.docxNarration lesson plan.docx
Narration lesson plan.docx
TARIQ KHAN112 views
Community-led Open Access Publishing webinar.pptx von Jisc
Community-led Open Access Publishing webinar.pptxCommunity-led Open Access Publishing webinar.pptx
Community-led Open Access Publishing webinar.pptx
Jisc93 views
Education and Diversity.pptx von DrHafizKosar
Education and Diversity.pptxEducation and Diversity.pptx
Education and Diversity.pptx
DrHafizKosar173 views
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively von PECB
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks EffectivelyISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively
PECB 585 views
Psychology KS4 von WestHatch
Psychology KS4Psychology KS4
Psychology KS4
WestHatch84 views

UNIT3.pptx

  • 2. C Functions 1. A function is a group of statements that together perform a task. Every C program has at least one function, which is main(). 2. You can divide up your code into separate functions. 3. A function declaration tells the compiler about a function's name, return type, and parameters. 4. A function definition provides the actual body of the function. 5. The C standard library provides numerous built-in functions that your program can call. For example, strcat() to concatenate two strings, memcpy() to copy one memory location to another location, and many more functions.
  • 3. C Function Declaration or Signatur A function declaration tells the compiler about a function name and how to call the function. The actual body of the function can be defined separately. A function declaration has the following parts − return_type function_name( parameter list ); Example: int max(int num1, int num2); NOTE: Parameter names are not important in function declaration only their type is required, so the following is also a valid declaration − int max(int, int);
  • 4. C Function Definition The general form of a function definition in C programming language is as follows − return_type function_name( parameter list ) { body of the function } Return Type − A function may return a value. The return_type is the data type of the value the function returns. Some functions perform the desired operations without returning a value. In this case, the return_type is the keyword void. Function Name − This is the actual name of the function. The function name and the parameter list together constitute the function signature.
  • 5. C Function Definition Parameters − A parameter is like a placeholder. When a function is invoked, you pass a value to the parameter. This value is referred to as actual parameter or argument. The parameter list refers to the type, order, and number of the parameters of a function. Parameters are optional; that is, a function may contain no parameters. Function Body − The function body contains a collection of statements that define what the function does.
  • 6. C Function Definition Example Given below is the source code for a function called max(). This function takes two parameters num1 and num2 and returns the maximum value between the two − /* function returning the max between two numbers */ int max(int , int ) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; }
  • 7. C Function Call 1. While creating a C function, you give a definition of what the function has to do. To use a function, you will have to call that function to perform the defined task. 2. When a program calls a function, the program control is transferred to the called function. A called function performs a defined task and when its return statement is executed or when its function-ending closing brace is reached, it returns the program control back to the main program. 3. To call a function, you simply need to pass the
  • 8. C Function Call/Parameter passing E #include <stdio.h> /* function declaration */ int max(int num1, int num2); int main () { /* local variable definition */ int a = 100; int b = 200; int ret; /* calling a function to get max value */ ret = max(a, b); printf( "Max value is : %dn", ret ); return 0; } /* function returning the max between two numbers */ int max(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; }
  • 9. Passing arrays to functions #include <stdio.h> /* function declaration */ double getAverage(int arr[], int size); int main () { /* an int array with 5 elements */ int balance[5] = {1000, 2, 3, 17, 50}; double avg; /* pass pointer to the array as an argument */ avg = getAverage( balance, 5 ) ; /* output the returned value */ printf( "Average value is: %f ", avg ); return 0; double getAverage(int arr[], int size) { int i; double avg; double sum = 0; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; }
  • 10. Passing pointers to functions #include <stdio.h> void salaryhike(int *var, int b) { *var = *var+b; } int main() { int salary=0, bonus=0; printf("Enter the employee current salary:"); scanf("%d", &salary); printf("Enter bonus:"); scanf("%d", &bonus); salaryhike(&salary, bonus); printf("Final salary: %d", salary); return 0; } OUTPUT: Enter the employee current salary:10000 Enter bonus:2000 Final salary: 12000
  • 11. Call by value in C 1. The call by value method of passing arguments to a function copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument. 2. By default, C programming uses call by value to pass arguments. In general, it means the code within a function cannot alter the arguments used to call the function.
  • 12. Call by value in C Example #include <stdio.h> /* function declaration */ void swap(int x, int y); int main () { /* local variable definition */ int a = 100; int b = 200; printf("Before swap, value of a : %dn", a ); printf("Before swap, value of b : %dn", b ); /* calling a function to swap the values */ swap(a, b); printf("After swap, value of a : %dn", a ); /* function definition to swap the values */ void swap(int x, int y) { int temp; temp = x; /* save the value of x */ x = y; /* put y into x */ y = temp; /* put temp into y */ return; } OUTPUT: Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100
  • 13. Call by reference in C 1. The call by reference method of passing arguments to a function copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. It means the changes made to the parameter affect the passed argument. 2. To pass a value by reference, argument pointers are passed to the functions just like any other value. So accordingly you need to declare the function parameters as pointer
  • 14. Call by reference in C Example #include <stdio.h> /* function declaration */ void swap(int *x, int *y); int main () { /* local variable definition */ int a = 100; int b = 200; printf("Before swap, value of a : %dn", a ); printf("Before swap, value of b : %dn", b ); /* calling a function to swap the values */ swap(&a, &b); printf("After swap, value of a : %dn", a ); /* function definition to swap the values */ void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; return; } OUTPUT: Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :200
  • 15. Recursions in C Recursion is the process of repeating items in a self-similar way. In programming languages, if a program allows you to call a function inside the same function, then it is called a recursive call of the function. void recursion() { recursion(); /* function calls itself */ } int main() { recursion(); } Recursive functions are very useful to solve many mathematical problems, such as calculating the factorial of a number, generating Fibonacci series, etc.
  • 16. Recursions in C Advantages 1. Reduce unnecessary calling of function. 2. Through Recursion one can Solve problems in easy way while its iterative solution is very big and complex. Disadvantages 1. Recursive solution is always logical and it is very difficult to trace.(debug and understand). 2. In recursive we must have an if statement somewhere to force the function to return without the recursive call being executed, otherwise the function will never return. 3. Recursion takes a lot of stack space, usually not considerable when the program is small and running on a PC. 4. Recursion uses more processor time.
  • 17. #include <stdio.h> int factorial(int); int main() { int num; int result; printf("Enter a number to find it's Factorial: "); scanf("%d", &num); if (num < 0){ printf("Factorial of negative number not possiblen"); } int factorial(int num){ if (num == 0 || num == 1){ return 1; } else{ return(num * factorial(num - 1)); } } else{ result = factorial(num); printf("The Factorial of %d is %d.n", num, result); } return 0; } Finding factorial of a number using
  • 18. Finding factorial of a number using
  • 19. Finding Fibonacci series of a numb recursion
  • 20. Finding Fibonacci series of a numb recursion #include <stdio.h> int fibonacci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonacci(i-1) + fibonacci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%dtn", fibonacci(i)); } return 0; }
  • 22. Write a C Program to calculate p of a number using recursion
  • 23. #include <stdio.h> long int getPower(int b,int p) { long int result=1; if(p==0) return result; result=b*(getPower(b,p-1)); //call function again return result; } int main() { int base,power; long int result; printf("Enter value of base: "); printf("Enter value of pow "); scanf("%d",&power); result=getPower(base,po printf("%d to the power o is: %ldn",base,power,resul return 0; }
  • 24. Write a C Program to count num of digits in a number using recu
  • 25. #include <stdio.h> //function to count digits int countDigits(int num) { static int count=0; if(num>0) { count++; countDigits(num/10); } else { return count; } } int main() { int number; int count=0; printf("Enter a positive integer number: "); scanf("%d",&number); count=countDigits(number); printf("Total digits in number %d is: %dn",number,count); return 0; }
  • 27. Dynamic Memory Allocation in C • As you know, you have to declare the size of an array before you use it. Hence, the array you declared may be insufficient or more than required to hold data. To solve this issue, you can allocate memory dynamically. • Dynamic memory management refers to manual memory management. This allows you to obtain more memory when required and release it when not necessary. • Although C inherently does not have any technique to allocate memory dynamically, there are 4 library
  • 28. Dynamic Memory Allocation in C Function Use of Function malloc() Allocates requested size of bytes and returns a pointer to first byte of allocated space calloc() Allocates space for array elements, initializes to zero and then returns a pointer to memory free() Deallocate the previously allocated space Change the size of previously
  • 29. The name malloc stands for "memory allocation". The function malloc() reserves a block of memory of specified size and return a pointer of type void which can be casted into pointer of any form. Syntax of malloc() ptr = (cast-type*) malloc(byte-size) Here, ptr is pointer of cast-type. The malloc() function returns a pointer to an area of memory with size of byte size. If the space is insufficient, allocation fails and returns NULL pointer. ptr = (int*) malloc(100 * sizeof(int)); Dynamic Memory Allocation in C
  • 30. Dynamic Memory Allocation in C The name calloc stands for "contiguous allocation". The only difference between malloc() and calloc() is that, malloc() allocates single block of memory whereas calloc() allocates multiple blocks of memory each of same size and sets all bytes to zero. Syntax of calloc() ptr = (cast-type*)calloc(n, element-size); This statement will allocate contiguous space in memory for an array of n elements. For example: ptr = (float*) calloc(25, sizeof(float));
  • 31. Dynamic Memory Allocation in C Dynamically allocated memory created with either calloc() or malloc() doesn't get freed on its own. You must explicitly use free() to release the space. syntax of free() free(ptr); This statement frees the space allocated in the memory pointed by ptr.
  • 32. Dynamic Memory Allocation in C If the previously allocated memory is insufficient or more than required, you can change the previously allocated memory size using realloc(). Syntax of realloc() ptr = realloc(ptr, newsize); Here, ptr is reallocated with size of newsize.
  • 33. #include <stdio.h> #include <stdlib.h> int main() { int num, i, *ptr, sum = 0; printf("Enter number of elements: "); scanf("%d", &num); ptr = (int*) malloc(num * sizeof(int)); //memory allocated using malloc if(ptr == NULL) { printf("Error! memory not allocated."); printf("Enter elements of array: "); for(i = 0; i < num; ++i) { scanf("%d", ptr + i); sum += *(ptr + i); } printf("Sum = %d", sum); free(ptr); return 0; } Dynamic Memory Allocation in C using ma
  • 34. #include <stdio.h> #include <stdlib.h> int main() { int num, i, *ptr, sum = 0; printf("Enter number of elements: "); scanf("%d", &num); ptr = (int*) calloc(num, sizeof(int)); //memory allocated using calloc if(ptr == NULL) { printf("Error! memory not allocated."); printf("Enter elements of array: "); for(i = 0; i < num; ++i) { scanf("%d", ptr + i); sum += *(ptr + i); } printf("Sum = %d", sum); free(ptr); return 0; } Dynamic Memory Allocation in C using cal
  • 35. Dynamic Memory Allocation in C using rea #include <stdio.h> #include <stdlib.h> int main() { int *ptr, i , n1, n2; printf("Enter size of array: "); scanf("%d", &n1); ptr = (int*) malloc(n1 * sizeof(int)); printf("Address of previously allocated memory: "); for(i = 0; i < n1; ++i) printf("%ut",ptr + i); printf("nEnter new size of array: "); scanf("%d", &n2); ptr = realloc(ptr, n2 * sizeof(int)); for(i = 0; i < n2; ++i) printf("%ut", ptr + i); return 0; }
  • 36. #include <stdio.h> #include <stdlib.h> int main() { int *iVar; char *cVar; float *fVar; iVar=(int *)malloc(1*sizeof(int)); cVar=(char *)malloc(1*sizeof(char)); fVar=(float *)malloc(1*sizeof(float)); printf("Enter character value: " scanf(" %c",cVar); printf("Enter float value: "); scanf("%f",fVar); printf("Inputted value are: % %c, %.2fn",*iVar,*cVar,*fVar); free(iVar); free(cVar); free(fVar); return 0; } C program to create memory for int, char and float variable at run time
  • 37. C program to input and print text using Dynamic Memory Allocation #include <stdio.h> #include <stdlib.h> int main() { int n; char *text; printf("Enter limit of the text: "); scanf("%d",&n); /*allocate memory dynamically*/ text=(char*)malloc(n*sizeof(char)); printf("Enter text: "); gets(text); printf("Inputted text is: %sn",text); /*Free Memory*/ free(text); return 0; }
  • 38. #include <stdio.h> #include <stdlib.h> struct student { char name[30]; int roll; float perc; }; int main() { struct student *pstd; pstd=(struct student*)malloc(1*sizeof(struct student)); if(pstd==NULL){ printf("Insufficient Memory, Exiting... n"); return 0; } printf("Enter name: "); gets(pstd->name); printf("Enter roll number: "); scanf("%d",&pstd->roll); printf("Enter percentage: "); scanf("%f",&pstd->perc); printf("nEntered details are:n"); printf("Name: %s, Roll Number: %d, Percentage: %.2fn",pstd- >name,pstd->roll,pstd->perc); return 0; C program to read and print the student details using structure and Dynamic Memory Allocation
  • 39. #include <stdio.h> #include <stdlib.h> struct student { char name[30]; int roll; float perc; }; int main() { struct student *pstd; int n,i; printf("Enter total number of elements: "); scanf("%d",&n); /*Allocate memory dynamically for n objetcs*/ pstd=(struct student*)malloc(n*sizeof(struct student)); if(pstd==NULL) { printf("Insufficient Memory, Exiting... n"); return 0; } C program to read and print the N student details using structure and Dynamic Memory Allocation