Download Presentation
Function with Output Parameters

Loading in 2 Seconds...

1 / 11

# Function with Output Parameters - PowerPoint PPT Presentation

Function with Output Parameters. We have seen that functions can return a single value or no value ( void return type) It is quite often useful to be able to return more than one value In this case, we use output parameters to pass back the additional information

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

## PowerPoint Slideshow about 'Function with Output Parameters' - hart

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Function with Output Parameters
• We have seen that functions can return a single value or no value (void return type)
• It is quite often useful to be able to return more than one value
• In this case, we use output parameters to pass back the additional information
• The argument in this case must specify a location to put the value in, not a value
Function with Output Parameters
• When we want to specify the location to store (e.g.) an integer, we must declare a pointer to an integer

void separate(double num, char *signp,

int *wholep, double *fracp) {

double magnitude;

if (num < 0) *signp = ‘-’;

else if (num == 0) *signp = ‘0’;

else *signp = ‘+’;

magnitude = fabs(num);

*wholep = floor(magnitude);

*fracp = magnitude - *wholep;

}

Function with Output Parameters
• Now, if we want to call this function, we have to supply a value for the first argument and variables for the second, third, and fourth

int main(void) {

double value;

char sn;

int whl;

double fr;

printf(“Enter a value to analyze> “);

scanf(“%lf”, &value);

separate(value, &sn, &whl, &fr);

Function with Output Parameters
• Notice how we specify the address of a variable - with the & operator (as in scanf)
• In the called function, we must use *var in expressions - otherwise we will be calculating with the address of the variable, not the value!
• A declaration such as int *var declares var as a pointer to an integer variable (which is declared somewhere else)
Function with Output Parameters
• Note that we can pass a number (e.g. 5.24) as the first argument to the function, but we can’t pass numbers (or characters) for the other arguments since they expect addresses not values
• What happens if we omit the & operator when calling the function?
Meaning of the * Symbol
• The * symbol has three separate meanings in C
• The simple one is the binary multiplication operator: var1 * var2
• In a declaration it means that the variable is a pointer to an element of the given type: char *signp
• In the body of a function (e.g. in an expression), it means follow the pointer: *signp = ‘-’; myvar = *ptrvar + 1;
Arguments Used for Both I/O
• We have seen arguments used for input or for output
• We can also use a single argument for both input (pass information to the called function) and output (return information to the calling function)
• To do this we must use a pointer to a variable
• Let’s write a function to add switch the values of two variables
Arguments Used for Both I/O

void switch(int *first, int *second) {

int holder;

holder = *first;

*first = *second;

*second = holder;

}

int main(void) {

int one = 1, two = 2; /* Initialized! */

printf(“One %d Two %d\n”, one, two);

switch(&one, &two);

printf(“One %d Two %d\n”, one, two);

}

Scope of Names
• The scope of a name refers to the region of a program where a particular meaning of a name is visible (can be referenced)
• We need to understand the scope of functions, variables, and constants
• For a constant - #define PI 3.14 - we can use the constant only in the file in which it is declared
• Arguments are visible only in the function in which they are declared
Scope of Names
• Local variables (variables defined in a function) are visible only in that function
• Global variables (variables defined outside of and before all functions) are visible to all functions in the file
• Functions are visible to all other functions in the file
• Arguments and local variables can be declared with the same name as global functions or variables. In this case, they hide the globals
Scope of Names
• Functions cannot be nested in C (in many other languages they can, resulting in more complicated scope rules)
• More complications arise when we use more than one file to implement a program