Introduction to C Pointers and Arrays Instructor Yin Lou 01 31 2011 Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers I I A pointer is a variable that contains the address of a variable Pointers are powerful but dangerous as well Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers I I A pointer is a variable that contains the address of a variable Pointers are powerful but dangerous as well I I I Sometimes pointers are the only way to express the computation Points usually lead to more compact and efficient code But the programmer must be extremely careful Introduction to C CS 2022 Spring 2011 Lecture 4 Memory I I Variables are stored in memory Think of memory as a very large array I I I Every location in memory has an address An address is an integer just like an array index In C a memory address is called a pointer I C lets you access memory locations directly Introduction to C CS 2022 Spring 2011 Lecture 4 Two Operators I address of operator I I I I Returns the address of its argument Said another way returns a pointer to its argument The argument must be a variable name dereference operator I I Returns the value stored at a given memory address The argument must be a pointer Introduction to C CS 2022 Spring 2011 Lecture 4 Declaration int i int p int m Integer i Pointer to integer Pointer to int pointer p i printf p p p now points to i Prints the address of i in p m p printf p m m now points to p Prints the address of p in m Introduction to C CS 2022 Spring 2011 Lecture 4 Example int a 0 int b 0 int p a 10 p a p 20 a b p b p 10 a b a p a b Introduction to C CS 2022 Spring 2011 Lecture 4 Passing Pointers to Functions void swap int a int b int t a a b b t void main int a 5 b 3 printf Before swap a d b d n a b swap a b printf After swap a d b d n a b Introduction to C CS 2022 Spring 2011 Lecture 4 Multiple Return Values void initialize int a char b a 10 b x void main int a b initialize a b Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers Are Dangerous What does this code do void main char x x a Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers Are Dangerous What does this code do void main char x x a What about this code void main char x a char p x p printf c n p Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I To declare an array use e g Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I To declare an array use e g I int a 5 Creates an array with 5 integer elements Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I To declare an array use e g I int a 5 Creates an array with 5 integer elements I The size of an array can t be changed I The number between the brackets must be a constant Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I To declare an array use e g I int a 5 Creates an array with 5 integer elements I The size of an array can t be changed I The number between the brackets must be a constant You can give initial values for array elements e g I Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I To declare an array use e g I int a 5 Creates an array with 5 integer elements I The size of an array can t be changed I The number between the brackets must be a constant You can give initial values for array elements e g I I int a 5 3 7 1 4 6 Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I To declare an array use e g I int a 5 Creates an array with 5 integer elements I The size of an array can t be changed I The number between the brackets must be a constant You can give initial values for array elements e g I I I int a 5 3 7 1 4 6 A better way int a 3 7 1 4 6 Let the compiler calculate the size Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I Array indices in C are zero based e g a 0 a 1 a 4 Introduction to C CS 2022 Spring 2011 Lecture 4 Arrays I Array indices in C are zero based e g a 0 a 1 a 4 Example void main int a 3 7 1 4 6 int i double mean 0 compute mean of values in a for i 0 i 5 i mean a 0 mean 5 printf Mean 2f n mean Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers and Arrays I Pointers and arrays are closely related Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers and Arrays I Pointers and arrays are closely related I An array variable is actually just a pointer to the first element in the array Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers and Arrays I Pointers and arrays are closely related I I An array variable is actually just a pointer to the first element in the array You can access array elements using array notation or pointers Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers and Arrays I Pointers and arrays are closely related I I An array variable is actually just a pointer to the first element in the array You can access array elements using array notation or pointers I I I a 0 is the same as a a 1 is the same as a 1 a 2 is the same as a 2 Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers and Arrays I Accessing array elements using pointers Example void main int a 3 7 1 4 6 int i double mean 0 compute mean of values in a for i 0 i 5 i mean a i mean 5 printf Mean 2f n mean Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers and Arrays I If pa points to a particular element of an array pa 1 always points to the next element pa i points i elements after pa and pa i points i elements before Introduction to C CS 2022 Spring 2011 Lecture 4 Pointers and Arrays I I If pa points to a particular element of an array pa 1 always points to the next element pa i points i elements after pa and pa i points i elements before The only difference between an array name and a pointer I I A …
View Full Document
Unlocking...