3. Parameters and Arguments
3.1 Terminology
- Parameters (Formal Parameters): Variables in the function definition
- Arguments (Actual Parameters): Values passed when calling the function
// 'a' and 'b' are parameters
int add(int a, int b) {
return a + b;
}
int main() {
int x = 5, y = 3;
// 'x' and 'y' are arguments
int result = add(x, y);
return 0;
}
3.2 Parameter Passing in C
C uses pass by value as its primary parameter passing mechanism. This means:
- A copy of the argument's value is made
- Changes to parameters inside the function don't affect the original variables
- The original variables remain unchanged
Example:
#include <stdio.h>
void modify_value(int num) {
num = 100; // This only changes the local copy
printf("Inside function: %d\n", num); // Output: 100
}
int main() {
int original = 50;
printf("Before function call: %d\n", original); // Output: 50
modify_value(original);
printf("After function call: %d\n", original); // Output: 50 (unchanged!)
return 0;
}
3.3 Python vs C Parameter Passing
Python:
def modify_list(lst):
lst.append(4) # Modifies the original list
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # Output: [1, 2, 3, 4]
C (Basic Types):
void modify_number(int num) {
num = 100; // Only modifies the copy
}
int main() {
int number = 50;
modify_number(number);
// number is still 50
return 0;
}
3.4 Multiple Parameters
Functions can have multiple parameters of different types:
#include <stdio.h>
// Function to calculate compound interest
float calculate_compound_interest(float principal, float rate, int time, int n) {
float amount = principal;
float rate_per_period = rate / (100.0 * n);
int total_periods = n * time;
for (int i = 0; i < total_periods; i++) {
amount *= (1 + rate_per_period);
}
return amount - principal; // Return only the interest
}
int main() {
float principal = 1000.0;
float annual_rate = 5.0; // 5% per year
int years = 2;
int compounding_freq = 4; // Quarterly
float interest = calculate_compound_interest(principal, annual_rate, years, compounding_freq);
printf("Principal: $%.2f\n", principal);
printf("Interest earned: $%.2f\n", interest);
printf("Total amount: $%.2f\n", principal + interest);
return 0;
}
No comments to display
No comments to display