29
loading...
This website collects cookies to deliver better user experience
#include <stdio.h>
void call_by_value(int a , int b){
a = 44;
b = 55;
}
int main() {
int a = 1;
int b = 2;
printf("value of a and b before function call :- %d and %d",a,b);
call_by_value(a, b);
printf("\nvalue of a and b after function call :- %d and %d",a,b);
return 0;
}
Output :-
value of a and b before function call :- 1 and 2
value of a and b after function call :- 1 and 2
#include <stdio.h>
void call_by_reference(int *a , int *b){
*a = 44;
*b = 55;
}
int main() {
int a = 1;
int b = 2;
printf("value of a and b before function call :- %d and %d",a,b);
call_by_reference(&a, &b);
printf("\nvalue of a and b after function call :- %d and %d",a,b);
return 0;
}
Output :-
value of a and b before function call :- 1 and 2
value of a and b after function call :- 44 and 55
Mutable Objects
Datatypes that can be modified or if there state can be changed those objects are known as Mutable datatype
like (list, dictionaries, set) .
Immutable Objects
Datatypes that cannot be modified or if there state cannot be changed those objects are known as Immutable datatype like **(int, float, bool, string, unicode, tuple).
num1 = 43
num2 = 12.44
num3 = False
name = 'hello'
print("Id in main function scope")
print(f"id of num1 = {id(num1)}")
print(f"id of num2 = {id(num2)}")
print(f"id of num2 = {id(num3)}")
print(f"id of name = {id(name)}")
def call_by_reference(num1,num2,num3,name):
print("\nId within function")
print(f"id of num1 = {id(num1)}")
print(f"id of num2 = {id(num2)}")
print(f"id of num2 = {id(num3)}")
print(f"id of name = {id(name)}")
call_by_reference(num1,num2,num3,name)
Output :-
Id in main function scope
id of num1 = 94157957099328
id of num2 = 140438713493200
id of num2 = 94157956423968
id of name = 140438848940272
Id within function
id of num1 = 94157957099328
id of num2 = 140438713493200
id of num2 = 94157956423968
id of name = 140438848940272
names = ['ram', 'shyam', 'bharat']
d = {'bob':21,'max':22}
print("Id in main function scope")
print(f"id of names list = {id(names)}")
print(f"id of d dict = {id(d)}")
def call_by_reference(name, d):
print("Id within function")
d['sam'] = 12
names.append('john')
print("\nModified Objects id :-")
print(f"id of names list = {id(names)}")
print(f"id of d dict = {id(d)}")
call_by_reference(names, d)
print("Modfied list and dict")
print(f"names = {names}")
print(f"dict = {d}")
Output :-
Id in main function scope
id of names list = 140439297460096
id of d dict = 140438712179600
Id within function
Modified Objects id :-
id of names list = 140439297460096
id of d dict = 140438712179600
Modfied list and dict
names = ['ram', 'shyam', 'bharat', 'john']
dict = {'bob': 21, 'max': 22, 'sam': 12}
num1 = 43
num2 = 12.44
num3 = False
name = 'hello'
print("Id in main function scope")
print(f"id of num1 = {id(num1)}")
print(f"id of num2 = {id(num2)}")
print(f"id of num2 = {id(num3)}")
print(f"id of name = {id(name)}")
def call_by_value(num1,num2,num3,name):
print("\nId within function")
num1 = 1
num2 = 2
num3 = 3
name = 'sam'
print("Modified Objects id")
print(f"id of num1 = {id(num1)}")
print(f"id of num2 = {id(num2)}")
print(f"id of num2 = {id(num3)}")
print(f"id of name = {id(name)}")
call_by_value(num1,num2,num3,name)
print("\Unmodified int, float, bool, string objects value in global scope")
print(f'num1 = {num1}')
print(f'num2 = {num2}')
print(f'num3 = {num3}')
Output :-
Id in main function scope
id of num1 = 94157957099328
id of num2 = 140438713494320
id of num2 = 94157956423968
id of name = 140438848940272
Id within function
Modified Objects id
id of num1 = 94157957097984
id of num2 = 94157957098016
id of num2 = 94157957098048
id of name = 140438713157936
Unmodified int, float, bool, string objects value in global scope
num1 = 43
num2 = 12.44
num3 = False
names = ('ram', 'shyam', 'bharat')
print("Id in main function scope")
print(f"id of names tuple = {id(names)}")
def call_by_value(name, d):
print("Id within function")
names = ('ram','shyam','bharat','john')
print(f"modified object value \n{names}")
print("\nModified Objects id :-")
print(f"id of names tuple = {id(names)}")
call_by_value(names, d)
print("\nUnchanged tuple object in global scope")
print(f"names = {names}")
Output :-
Id in main function scope
id of names tuple = 140438712974144
Id within function
modified object value
('ram', 'shyam', 'bharat', 'john')
Modified Objects id :-
id of names tuple = 140438712255888
Unchanged tuple object in global scope
names = ('ram', 'shyam', 'bharat')