44 lines
1.3 KiB
Markdown
44 lines
1.3 KiB
Markdown
|
---
|
||
|
title: Passing pointers to funtions
|
||
|
---
|
||
|
|
||
|
# Passing pointers to funtions
|
||
|
C allows passing a pointer to a function. To achieve this, simply declare the parameters as pointer type.
|
||
|
This way of passing references to functions is useful when you want to modify variables that are out of the scope of that function.
|
||
|
|
||
|
```C
|
||
|
// incorrect implementation of swap
|
||
|
#include <stdio.h>
|
||
|
void swap(int a, int b){
|
||
|
int c;
|
||
|
c = a;
|
||
|
a = b;
|
||
|
b = c;
|
||
|
}
|
||
|
int main(){
|
||
|
int var1 = 10;
|
||
|
int var2 = 20;
|
||
|
swap(var1, var2);
|
||
|
printf("Value of var1: %d \n", var1); // prints 10
|
||
|
printf("Value of var2: %d \n", var2); // prints 20
|
||
|
}
|
||
|
```
|
||
|
In this code example the swap function does not work as intended since it swaps two variables that exist only inside the scope of that function. To fix this we make a modification as shown below.
|
||
|
```C
|
||
|
// correct implementation of swap
|
||
|
#include <stdio.h>
|
||
|
void swap(int* a, int* b){
|
||
|
int c = *a;
|
||
|
*a = *b;
|
||
|
*b = c;
|
||
|
}
|
||
|
int main(){
|
||
|
int var1 = 10;
|
||
|
int var2 = 20;
|
||
|
swap(&var1, &var2);
|
||
|
printf("Value of var1: %d \n", var1); // prints 20
|
||
|
printf("Value of var2: %d \n", var2); // prints 10
|
||
|
}
|
||
|
```
|
||
|
In the second code example you were able to change the values of the variables only because you were constantly de-referencing a pointer within the function instead of trying to change the values directly
|