Download presentation
Presentation is loading. Please wait.
Published byBlanche Hall Modified over 9 years ago
1
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 1 of 20 cstaff@cs.um.edu.mt CSA2090: Systems Programming Introduction to C Dr. Christopher Staff Department of Computer Science & AI University of Malta Lecture 4: Functions & Pointers
2
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 2 of 20 cstaff@cs.um.edu.mt Aims and Objectives The definition of function allows a C program to be modularised C permits memory locations to be accessed directly as well as through variable names
3
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 3 of 20 cstaff@cs.um.edu.mt Functions C has no procedures or methods, only functions Functions can take 0, 1, or more parameters or arguments Functions return exactly one value
4
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 4 of 20 cstaff@cs.um.edu.mt Form of a function ( ) { }
5
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 5 of 20 cstaff@cs.um.edu.mt Example function int mean(int a, int b) { int tmp; tmp = (a + b) / 2; return tmp; }
6
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 6 of 20 cstaff@cs.um.edu.mt Function behaviour Functions end when –a closing } is reached –a return statement is reached returns control to the calling function –an exit statement is reached terminates the program –a crash occurs
7
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 7 of 20 cstaff@cs.um.edu.mt C function arguments All parameters are ‘passed by value’ int main() { int a = 1277, x; … x = foo(a); }
8
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 8 of 20 cstaff@cs.um.edu.mt C function arguments When foo is entered a copy of a is created int main() { int a = 1277, x; … x = foo(a); } int foo(int a) {… }
9
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 9 of 20 cstaff@cs.um.edu.mt C function arguments To change the value of a in main() int main() { int a = 1277; … a = foo(a); } int foo(int a) {a = a*2; return a;}
10
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 10 of 20 cstaff@cs.um.edu.mt C function arguments To change the value of a in main() int main() { int a = 1277; … a = foo(a); } int foo(int a) {a = a*2; return a;}
11
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 11 of 20 cstaff@cs.um.edu.mt C function arguments To change the value of a in main() int main() { int a = 1277; … a = foo(a); } int foo(int a) {a = a*2; return a;} 1 2
12
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 12 of 20 cstaff@cs.um.edu.mt Call by reference Being able to return one value means that you can only change the value of one variable To change the values of other variables, we must tell the called function where they exist in memory
13
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 13 of 20 cstaff@cs.um.edu.mt Pointers C supports reference to a memory address using the & operator &a will return the address of variable a in memory &a is 100 Addresses can be printed using %u
14
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 14 of 20 cstaff@cs.um.edu.mt Pointers To retrieve or access the value stored at a memory address, use the * operator a is 1277 You can use & with any variable, but * dereferences the value
15
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 15 of 20 cstaff@cs.um.edu.mt Declaring pointers int *p; // p is pointer to int p = &a; // p contains address of a printf(“%d\n”, *p);
16
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 16 of 20 cstaff@cs.um.edu.mt Declaring pointers int *p; // p is pointer to int p = &a; // p contains address of a printf(“%d\n”, *p); &p = ? *a = ?
17
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 17 of 20 cstaff@cs.um.edu.mt Declaring pointers int *p; // p is pointer to int p = &a; // p contains address of a printf(“%d\n”, *p); &p = 200 *a = garbage!! a = 10 *p = ?
18
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 18 of 20 cstaff@cs.um.edu.mt Declaring pointers int *p; // p is pointer to int p = &a; // p contains address of a printf(“%d\n”, *p); &p = 200 *a = garbage!! p = 10 *p = ?
19
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 19 of 20 cstaff@cs.um.edu.mt Nice try! int main() { int *p, bar=10; p = foo(bar); } int *foo(int bar){ int x = bar * 2; return &x; }
20
University of Malta CSA2090: Lecture 4 © 2004- Chris Staff 20 of 20 cstaff@cs.um.edu.mt Next lecture Pointers, structures and strings
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.