You are on page 1of 14

Pointers and Functions

Examples:
1. Pointers as parameters VS reference parameters
2. Swap fix errors
3. Find the error return a pointer from a function

1. Pointers as parameters VS reference parameters


main
main

mixUp
mixUp

main
main

int main( void )


{
int x = 20;
int y = 30;
int z = 40;
mixUp( z, &x, &y );
cout << x << " " << y << " " << z;

mixUp
mixUp

return 0;
}

main
main

mixUp
mixUp

int main( void )


{
int x = 20;
int y = 30;
int z = 40;
mixUp( z, &x, &y );
cout << x << " " << y << " " << z;
return 0;
}
/* =========================== */
void mixUp(int a, int *b, int *c)
{
a = 100;
*b = 60;
*c = 70;
return;
}

y
20
20

main
main
a

z
30
30

40
40
c

mixUp
mixUp
mixUp( z, &x, &y );
void mixUp(int a, int *b, int *c);

y
20
20

main
main
a
mixUp
mixUp

z
30
30

b
40
40

40
40
c

&x
&x

&y
&y

mixUp( z, &x, &y );


void mixUp(int a, int *b, int *c);

y
20
20

main
main
a
mixUp
mixUp

z
30
30

b
40
40

40
40
c

&x
&x

&y
&y

mixUp( z, &x, &y );


void mixUp(int a, int *b, int *c);

y
20
20

main
main
a
mixUp
mixUp

z
30
30

b
40
40

40
40
c

&x
&x

&y
&y

void mixUp(int a, int *b, int *c)


{
a = 100;
*b = 60;
*c = 70;
return;
}
8

x
main
main

20
20 60
60
a

mixUp
mixUp

40
40100
100

30
30 70
70
b

40
40
c

&x
&x

&y
&y

void mixUp(int a, int *b, int *c)


{
a = 100;
*b = 60;
*c = 70;
return;
}
9

x
main
main

mixUp
mixUp

y
60
60

z
70
70

Output: 60

40
40

70 40

10

2. Swap fix errors


main
main

void swap(int a, int b);

swap
swap

int main(void)
{
int x = 20;
int y = 30;
// . . .
swap(x, y);
// . . .
return 0;

void swap(int a, int b)


{
int hold;
hold = a;
a
= b;
b
= hold;
return;

}
11

swap( x, y);
swap(&x, &y);

// this call does nothing to x and y


// use pointers

main
main

void swap(int *a, int *b);

swap
swap

int main(void)
{
int x = 20;
int y = 30;
// . . .
swap(&x, &y);
// . . .
return 0;

void swap(int *a, int *b)


{
int hold;
hold = *a;
*a
= *b;
*b
= hold;
return;

}
12

3. Find the error


char *getFileName();
int main()
{
char *name;
name = getFileName();
cout << name << endl;
return 0;
}
char *getFileName()
{
char fileName[31];
cout << "File name: ";
cin >> fileName;
return fileName;
}

13

char *getFileName();
int main()
{
char *name;

Do not return the address of


a local variable!

name = getFileName();
cout << name << endl;
return 0;
}
char *getFileName()
{
char fileName[31];
cout << "File name: ";
cin >> fileName;
return fileName;
}

14

You might also like