Download presentation
Presentation is loading. Please wait.
Published bySamson Waters Modified over 9 years ago
1
CSC 107 – Programming For Science
2
Today’s Goal Learn how pointers really used with arrays Exploit the similarity between pointers & arrays Take advantage of relationship with built-in functions Understand what NULL is & why we use NULL hardest topic of term Pointers still hard & this is hardest topic of term
3
Arrays vs. Pointers ArraysPointers YamsSweet Potatoes
4
Arrays vs. Pointers ArraysPointers Yams Sweet Potatoes Yams
5
Arrays vs. Pointers Arrays = Yams Sweet PotatoesPointers = Sweet Potatoes Yams Makes space at declaration Variable value is address Use [] to access entries Can also access using * Can be assigned a pointer Needs target to be useful Variable value is address Use * to access target Can also access using [] Can be assigned array Often use pointers & arrays interchangeably
6
Arrays + Pointers = Pointer arithmetic enables mixing & matching Relies on fact that * and [] are synonyms Used processing cStrings (& with other arrays, too) Provides another way to access array elements Use foo[ nnn ] to access entry in foo at index nnn But could also access entry using *(foo+ nnn ) Pointers follow same rules and work similarly But, pointers access offset from where they point
7
How Pointers Get Used
8
Using the strstr Function Finds where 2 nd cString is found in 1 st cString Pointer to 1 st entry returned by this function To be found, needs perfect match of entire cString Looks from left to right until a match is found char myName[]="John J. Jingleheimerschmidt"; char *start = strstr(myName, "J"); char *ptr = strstr(myName, "John"); char *middle = strstr(start + 1, "J"); char *last = strstr(middle + 1, "J"); char *oops = strstr(last + 1, "J");
9
Slide Is NULL (But Not void) NULL is special value used by all pointers Not an actual address – NULL used if when no target Not a real address, but says DO NOT USE ME If pointer is NULL, accessing value will crash May get vague error like "Segmentation Fault" Most likely, however, the program simply crashes Use NULL anywhere in code pointer is usable Needs #include & must be in CAPS
10
Slide Is NULL (But Not void) NULL is special value used by all pointers Not an actual address – NULL used if when no target Not a real address, but says DO NOT USE ME If pointer is NULL, accessing value will crash May get vague error like "Segmentation Fault" Most likely, however, the program simply crashes Use NULL anywhere in code pointer is usable Needs #include & must be in CAPS (Tony apologizes,btw)
11
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
12
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
13
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
14
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
15
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
16
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
17
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
18
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
19
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
20
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
21
Using NULL With Pointers char * ptr = NULL; char *prof = "Matthew Hertz"; char letter = *ptr; float * toiletBulb = ptr; toiletBulb = NULL; int * pIX = null; ptr = strstr("Hi Mom!", "mom"); strstr(NULL, "Monkeys!"); strstr(prof, ptr); *ptr = NULL;
22
Using the strchr Function Finds where char found in 1 st cString Pointer to 1 st entry returned by this function To be found, needs exact match of the char Looks from left to right until a match is found char myName[]="John J. Jingleheimerschmidt"; char *start = strchr(myName, 'J'); char *ptr = strchr(myName, myName[4]); char *startOver = strchr(start, 'J'); char *middle = strchr(start + 1, 'J'); char *nope = strchr(myName, 'j');
23
Your Turn Get into your groups and try this assignment
24
For Next Lecture Dynamic memory allocation in 12.9 & 12.17 More interesting topic in all of computer science? As program runs, can we grow & shrink arrays? My thesis was related to which lecture this semester? Angel also has Weekly Assignment #10 due Wed.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.