top

Search

C Tutorial

.

UpGrad

C Tutorial

Difference Between Arguments And Parameters

Parameters and arguments are two inherent aspects of C programming that allow coders to reduce complexity and ensure faster program execution. For data structures in C, several minute differences exist between a parameter and an argument, which every distinguished programmer must know. This article underlines some significant differences with several examples to ensure better understanding. 

What is an Argument?

An argument in C programming is a standard process of providing value while calling a function. However, using argument, programmers can call upon the value or slightly change it per the functional requirements. Sometimes, the programmer can pre-define the values while creating the variables.

For example, 

Say there is a function as follows, 

#include <stdio.h>

int add_func(int x, int y);

int main()
{
    int a, b;
    a = 5;
    b = 6;
    int add = add_func(a, b); // argument
    printf("Sum of %d and %d is %d", a, b, add);
    return 0;
}

int add_func(int x, int y)
{
    int c = x + y;
    return c;
}

Here, the add_func function takes two integer parameters x and y, perform addition, and returns the sum. The main function calls add_func with arguments a and b, stores the result in the add variable, and then prints the sum

Defining every variable in a single function and getting the output accordingly is possible. However, for bigger coding tasks with nuanced class and function nomenclature, seasoned programmers pre-defined variables and used arguments to call in the necessary variables instead of re-defining the same value multiple times. It allows one to save time and reduce complexity, encouraging faster compilation. 

There are three types of arguments, which are differentiated by their application in a program. While the data structures in C allow only three such types, C++ ensures that more options are available to a programmer. The three main types of arguments in C are as follows. 

Pass by value

A pass-by-value argument in a program returns the value of the called function without any modification. However, one can use the calling function and later modify the value once in the function definition. 

# include <stdio.h>

int main(void)
{
 int x =5;
 int y =7;
 func (x,y); // argument
 printf("Main, x= %d, y=%d\n", x,y);
 return 0;
}
void func(int a, int b)
{ 
 printf("Function, a=%d, b=%d\n",a,b);
}

Considering the following code snippet, the output will be as follows

Main, x=5, y=7
Function, a=5, b=7

The main function declares and assigns values to two integers, x and y. It then calls the func function, passing the x and y values as arguments. After the function call, the x and y values are printed using printf. The func function takes two integer parameters, a and b and simply prints their values.

Overall, the code demonstrates the concept of passing values to a function and printing them in both the main and func functions.

Pass by reference

Pass by reference is the process where the address of the argument is passed to the calling function. While working with data structures in C, one must define the parameter as a pointer instead of a variable or string. Since pass-by reference shares the address in a function, any changes done to the pointer in the calling function reflect globally across the entire code snippet. 

Let’s consider a simple swapping example to develop a better understanding

#include <stdio.h>
void swap(int *l, int *m)
{
 int temp = *l;
 *l=*m;
 *m= temp;
}

int main(void)
{
 int p=10;
 int q=20;
 swap(&p, &q); //argument
 printf("P is %d and Q is %d\n", p,q);
 return 0;
}

The corresponding output for the given snippet is as follows. 

P is 20 and Q is 10

Here, when the function “swap” is used, the address of variables P and Q is passed to the “swap” function instead of the value being passed. 

What is Parameter?

Parameters are names or variables assigned to specific values while initialising a function with data structures in C. In the example of “int add(a,b)”, the parameter is “a”, and in later parts of the snippet, the programmer can pass any value to “a” as an argument in the code snippet by calling the function like add(1,2). “int b= a+2;” can serve as one such example of calculation. When using data structures in C, there are several types of parameters. These types are as follows. 

Integer

An integer is a common parameter type used in various parts of a data structure in C. An integer parameter type is applicable while storing an integer value like 1, 5, 2.2, 5.8, etc. However, the specific range mentioned (-2147483648 to 2147483647) corresponds to the range of a 32-bit signed integer in most implementations of C.

In C, the range of integer values depends on the specific data type used. Here are some commonly used integer data types and their ranges:

  • int: Typically a 32-bit signed integer with a range of -2147483648 to 2147483647.

  • long int: Usually a 32-bit or 64-bit signed integer with a wider range depending on the platform.

  • long long int: A 64-bit signed integer with a much wider range.

Char

A char or string type parameter stores a text input within a C program. One can store values like “x”, “y”, “z” or names and addresses like “Radford Street”, “John Doe”, and more. 

Some common ways to define a value are as follows

  • char str[] = “upGrad. \0”;.

    • In this example, the number of characters is allotted per the length of the value, which is, in this case, is 5.

  • char str[10] = “Learning data structures in C through upGrad. \0”;

    • In this case, the number of stored characters will be “Learning d”, as the length of the is defined as 10. 

  • char str[46] = “Learning data structures in C through upGrad. \0”;

    • This example stores the entire string as the length is determined as 45; hence during execution, the program will return the output “Learning data structures in C through upGrad.”

Spaces are usually counted within the length of a string, and the maximum string length for data structures in C is approximately 2048 bytes. However, this might vary per the compiler types. 

Array

An array is a particular parameter classification where one can store multiple numbers or characters in a single variable. These are primarily used to store multiple blocks of information of similar types. Here are a few examples of arrays. 

  • int a[3] = {5, 10, 15};

    • Here, a variable can store a maximum of 3 integer values. These values per the shown definitions are 5, 10 and 15. Furthermore, variable a will only store integers. Defining a character can result in an error. 

  • char str[70] = “Learning data structures and algotithms in C through upGrad. \0”;
    • In this example, the variable str has a maximum length of 70 characters, and during execution, the sentence “Learning data structures and algorithms in C through upGrad.” will be displayed.

Boolean

A boolean parameter is a specific data type that has only two values. These values determine the ideology of  “yes” and “no” in the real world and in terms of data structures in C. It is common to use int or char types to represent boolean values, where 0 typically represents false, and any non-zero value represents true.

Difference between Argument and Parameter in C

Arguments are values passed down from one function to another, while a parameter is a variable defined in a particular class function. Let’s consider this example for more clarity. 

# include <stdio.h>

int main(void)
{
 int x =5; 
 int y =7; 
 func (x,y); //argument
 printf("Main, x= %d, y=%d\n", x,y);
 return 0;
}
void func(int a, int b)//parameter initialization a,b
{ 
 printf("Function, a=%d, b=%d\n",a,b);
}

In the case of the following code snippet, “func(x,y);” is the argument since it sends the values 5 and 7 to the function “void func”. On the other hand, the initialisation of definitions like int x= 5; and int y= 7 are parameters. Furthermore, an argument is applicable only when a predefined function is called in another function. At the same time, parameters are inherently used whenever one needs to define a variable or a function. 

Conclusion

Arguments and parameters often complement each other and work hand in hand to reduce the complexity and overall execution time of a program. For shorter code snippets, the differentiation is harder to determine. However, while developing complex programs and applications using data structures in C, these small nuances, when coupled together, allow programmers to create the mandatory differentiation between an experienced coder and a professional. 

Aspirant coders hoping to establish a successful career in programming and development can check out Full Stack Development Bootcamp by upGrad to give their career that much-needed push towards new beginnings!

FAQs

1. Is string considered a data type in C?

String and chars are data types often used interchangeably in data structures for C. However, there is no data type called string. A char data type is used with an array. 

2. Can I send an argument from one class to another?

A programmer can send arguments from one class to another while building data structures in C. 

3. Can integers be stored in a variable in C programming?

It is possible to store integer values in a character variable. However, during execution, the integer variable is converted to its corresponding character per the American character encoding standard (ASCII).

Leave a Reply

Your email address will not be published. Required fields are marked *