Frank Palmisano Frank Palmisano - 1 month ago 8
C Question

Parameter Passing in C - Pointers, Addresses, Aliases

Could someone please explain the difference between parameter passing in C please?
According to professor notes there are 4 different ways to pass parameters


  1. Call-by-value

  2. Call-by-address (pointer)

  3. Call-by-alias

  4. Global variable / Static variable



If you could please give an example, I would greatly appreciate that, and your work would be commended.

Answer

1] Call-by-value - passing the value to a function as a parameter. If the fucntion modifies the variable, the actual variable wont get changed. void fun1(int myParam) { myParam = 4; }

    void main()
    {
        int myValue = 2;
        fun1(myValue);
        printf("myValue = %d",myValue);
    }

   - MyValue will always be 2

2] Call-by-address (pointer)

   void fun1(int *myParam)
    {
       *myParam = 4;
    }
    void main()
    {
        int myValue = 2;
        fun1(&myValue);
        printf("myValue = %d",myValue);
    }

Here we are passing the address of myValue to fun1. so value of myVal will be 4 at the end of main()

3] Call-by-alias - There are no alias in C as per my understanding. It should be the CPP reference mechanism

4] Global variable / Static variable - Global and static variables are variables stored in a common places, accessible by the caller and callee functions.So both caller and callee will be able to access and modify them

    int myValue = 2;
    void fun1()
    {
       myValue = 4;
    }
    void main()
    {
        myValue = 2
        fun1();
        printf("myValue = %d",myValue);
    }

As you can guess, the value of myValue will be 4 at the end of main().

Hope it helps

Comments