6. Pointers, Structs, and Arrays. March 14 & 15, 2011

Size: px
Start display at page:

Download "6. Pointers, Structs, and Arrays. March 14 & 15, 2011"

Transcription

1 March 14 & 15, 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 47

2 Outline Recapitulation Pointers Dynamic Memory Allocation Structs Arrays Bubble Sort Strings Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 2 of 47

3 Recapitulation What is a for loop? What is a declaration and what is a definition? What is a namespace for? What is a header file and how do we use it? What is an enum? What happens at the end of a scope? What is the difference between call-by-value and call-by-reference? Why is there a range for all primitive variables in C? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 3 of 47

4 6.1. Pointers Memory 21: 22; 20 // int a 23; 24; 25; 26; 27; 28: We have talked a lot about the mapping from variables to addresses. However, we have never analysed the real addresses. The memory is enumerated using an integer. Pointers are variables that hold the memory number (address) instead of a value. / / holds a f l o a t i n g p o i n t / / number double a ; / / holds address of a f l o a t i n g / / p o i n t number double b ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 4 of 47

5 We Have Already Used Pointers Before : C/C++ only supports call-by-value. Call-by-reference is not a language concept. void foo ( i n t & a ) { / / a c t u a l l y, C/C++ does not support t h i s... i n t a = 20; foo ( a ) ; void foo ( i n t a ) { / / address now i s copied ( c a l l by value ) / / work on address of a, not on a d i r e c t l y... i n t a = 20; foo ( / address of a / ) ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 5 of 47

6 Pointers And Addresses The * operator declares a pointer. i n t a ; i n t p ; The & operator returns the address of a variable (address operator or reference operator). p = &a ; The * operator makes an operation act on the location an pointers points to instead of the pointer itself (dereferencing operator. a += 10; ( p ) += 10; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 6 of 47

7 Pointers and the Memory Memory 21: 22; 20 // int a 23; 24; 22 // pointer p 25; 26; 27; 28: int a; a = 20; int *p; p = &a; a++; p++; (*p)++; *p++; // try this at home Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 7 of 47

8 Exercise void foo ( i n t & a ) { a+=1; i n t main ( ) { i n t a = 20; foo ( a ) ; std : : cout << a ;... Rewrite exactly this code without a return statement and without the reference operator. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 8 of 47

9 Solution void foo ( i n t a ) { ( a )+=1; / / i n d i r e c t memory access i n t main ( ) { i n t a = 20; / / d i r e c t memory access foo (&a ) ; std : : cout << a ;... There s three modifications. Analyse the call-by-value for the pointer. Which solution is the better/nicer solution? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 9 of 47

10 When to Use Pointers void foo ( i n t a ) { ( a )++;... a++; / / That could not have happened with references Pointers are difficult to handle (lots of syntactic overhead). We know how to do it, but do collaborators know? Avoid it whenever possible. Use C++ references instead. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 10 of 47

11 Pointer Syntax The pointer operator binds to the right neighbour. i n t a ; i n t b1 ; i n t b2 ; i n t b3 ; i n t c1, c2 ; i n t c3, c4 ; i n t c5, c6 ; i n t c7, c8 ; i n t c9 ; c7 = c8 ; c7 = c8 ; c7 = c8 ; c7 = c8 ; By the way, often people write int* p=0; to make the pointer point to nothing. However, also int* p = 20; would be fine (and for almost 100 percent is a bug). Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 11 of 47

12 Pointers and Scopes i n t p = &a ; f o r ( i n t i =0; i <2; i ++) { i n t a = 2 i ; p = &a ; std : : cout << a << std : : endl ; std : : cout << p << std : : endl std : : cout << a << std : : endl ; / / does t h i s work? std : : cout << p << std : : endl ; / / does t h i s work? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 12 of 47

13 Pointers and Scopes i n t p = &a ; f o r ( i n t i =0; i <2; i ++) { i n t a = 2 i ; p = &a ; std : : cout << a << std : : endl ; std : : cout << p << std : : endl std : : cout << a << std : : endl ; / / does t h i s work? std : : cout << p << std : : endl ; / / does t h i s work? With pointers, we can violate the end-of-scope rules, i.e. we can access variables that do not exist anymore. This is the principle of all these buffer overrun malware. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 12 of 47

14 6.2. Dynamic Memory Allocation Switching Off the Lifecycle Management double p ; p = new double ; / / now, p p o i n t s to an e x i s t i n g new v a r i a b l e p = 20; delete p ; / / now v a r i a b l e i s freed, but p s t i l l p o i n t s / / to t h i s v a r i a b l e. p = 30; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 13 of 47

15 Two Memory Leaks double p ; f o r ( i n t i =0; i <20; i ++) { p = new double ; delete p ; f o r ( i n t i =0; i <20; i ++) { double p = new double ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 14 of 47

16 Two Memory Leaks double p ; f o r ( i n t i =0; i <20; i ++) { p = new double ; delete p ; f o r ( i n t i =0; i <20; i ++) { double p = new double ; The upper operation creates 20 doubles on the heap, but it destroys only one double in the end. Consequently, the remaining 19 doubles are lost for the future program execution. Let s sketch the memory layout! The second one destroys the pointer but not the space where the pointer is pointing to. This is why many applications crash after several hours of execution. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 14 of 47

17 6.3. Structs n-tuples / This represents one student i n our o n l i n e system / s t r u c t Student { i n t number ; double averagegrade ; ; Structs allow us to create user-defined data structures (n-tuples). Once declared, we can use them like built-in types. C/C++ takes care of the memory layout. This is particularly important for arrays of structs. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 15 of 47

18 Declaration and Definition / / T e l l s compiler t h a t something / / l i k e a StudentID does e x i s t s t r u c t StudentID ; / This represents one student i n our o n l i n e system / s t r u c t Student { i n t number ; double averagegrade ; StudentID id ; ; For pointers (and references), it is sufficient to tell the compiler that the type does exist (declaration). The declaration is needed for recursive definitions of structs. The declaration is needed for more the composition of structs. We ll first analyse struct composition. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 16 of 47

19 Struct Composition (Attributes) / / T e l l s compiler t h a t something / / l i k e a StudentID does e x i s t s t r u c t StudentID { i n t photonumber ; bool iswinterterm ; ; / This represents one student i n our o n l i n e system / s t r u c t Student { i n t number ; double averagegrade ; StudentID id ; / / i t isn t a pointer anymore ; Take a sheet of paper and sketch the memory layout for an instance of Student if the id is a pointer and if it is not a pointer. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 17 of 47

20 Memory Memory 21: 22; 40 // photono 23; true // winter term 24; 25; 26; 1234 // number 27; 3.4 // average grade 28: 22 // pointer 24; 25; 26; 1234 // number 27; 3.4 // average grade 28; 40 // photono 29; true // winter term 30: 31: Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 18 of 47

21 Structs Referencing Structs s t r u c t I n t e g e r E n t r y { i n t value ; I n t e g e r E n t r y next ; ; Take a sheet of paper and sketch the memory layout for an instance of IntegerEntry referencing another instance of IntegerEntry. What could be the reasoning behind such a data structure? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 19 of 47

22 Memory 21: 22; 40 // value 23; 26 // next 24; 25; 26; 23 // value 27; 0 // next 28: Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 20 of 47

23 Accessing the Elements of a Struct / / T e l l s compiler t h a t something l i k e a StudentID does e x i s t s t r u c t I n t e g e r E n t r y { i n t value ; I n t e g e r E n t r y next ; ;... IntegerEntry myentry ; myentry. value = 20; myentry. next = 0; IntegerEntry pentry = new IntegerEntry ; pentry >value = 20; pentry >next = 0; delete pentry ; The dot gives access to sub-fields. The -> operator gives access to sub-fields of pointers. Structs can be used with new as well. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 21 of 47

24 The Single Linked List / / T e l l s compiler t h a t something l i k e a StudentID does e x i s t s t r u c t I n t e g e r E n t r y { i n t value ; I n t e g e r E n t r y next ; ; void p r i n t L i s t ( I n t e g e r E n t r y f i r s t E n t r y ) { while ( f i r s t E n t r y! = 0 ) { std : : cout << f i r s t E n t r y >value << ; f i r s t E n t r y = f i r s t E n t r y >next ; void append ( I n t e g e r E n t r y f i r s t E n t r y, i n t value ) { while ( f i r s t E n t r y >next! = 0 ) { f i r s t E n t r y = f i r s t E n t r y >next ; IntegerEntry newentry = new IntegerEntry ; f i r s t E n t r y >next = newentry ; newentry >next = 0; newentry >value = value ; Can you rewrite append() recursively? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 22 of 47

25 Remove Element Operation Play around with the list and create a list [2, 4, 6, 8]. Write a remove operation that accepts an integer k and removes the kth entry from the list. Invoke it with remove(2). Print the result to the terminal. It should return [2, 4, 8]. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 23 of 47

26 An Excursus on Lists and Complexity the big-o notation f O(n k ) Doesn t grow faster than n k. Faster or slower refers to the leading term of the runtime polynomial. Constants or polynomials of lower order are not considered. Often, one writes = or says is of instead of is contained in. What does this mean for our list? What is the n there? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 24 of 47

27 An Excursus on Lists and Complexity the big-o notation f O(n k ) Doesn t grow faster than n k. Faster or slower refers to the leading term of the runtime polynomial. Constants or polynomials of lower order are not considered. Often, one writes = or says is of instead of is contained in. What does this mean for our list? What is the n there? Study the list in terms of n list entries. If we remove the first element, this is a fixed number of operations (O(1)). If we append an element, our while loop has to run over all n element before we can append an element (O(n)). If we search for an element, we have to study each element exactly once (O(n)). Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 24 of 47

28 An Excursus on Lists and Complexity the big-o notation f O(n k ) Doesn t grow faster than n k. Faster or slower refers to the leading term of the runtime polynomial. Constants or polynomials of lower order are not considered. Often, one writes = or says is of instead of is contained in. What does this mean for our list? What is the n there? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 25 of 47

29 An Excursus on Lists and Complexity the big-o notation f O(n k ) Doesn t grow faster than n k. Faster or slower refers to the leading term of the runtime polynomial. Constants or polynomials of lower order are not considered. Often, one writes = or says is of instead of is contained in. What does this mean for our list? What is the n there? Study the list in terms of n list entries. If we remove the first element, this is a fixed number of operations (O(1)). If we append an element, our while loop has to run over all n element before we can append an element (O(n)). If we search for an element, we have to study each element exactly once (O(n)). What could we do to make the append operation run faster? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 25 of 47

30 6.4. Arrays Application example: At the university, we wanna keep track of four grades a student did throughout his Master s studies. double analysis1 ; double analysis2 ; double linearalgebra ; double stochastics ;... / Takes grades, computes the average, and returns t h i s value. / double computeaverage ( const double& g1, const double& g2,... ) { double r e s u l t = g1+g2+g3+g4 ; r e s u l t /= 4. 0 ; r e t u r n r e s u l t ; Is this impractical, if we wanna store more than four values. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 26 of 47

31 Array Declaration Memory 21: 22; // grade[0] 23; // grade[1] 24; // grade[2] 25; // grade[3] 26; 27; 28: 22 // grade (pointer) double grade [ 4 ] ;... Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 27 of 47

32 Array Access Memory double grade [ 4 ] ;... 21: 22; // grade[0] 23; // grade[1] 24; // grade[2] 25; // grade[3] 26; 27; 28: 22 // grade (pointer) grade [ 0 ] = 1. 3 ; grade [ 2 ] = 3. 3 ; grade [ 3 ] = 1. 0 ; grade [ 1 ] = 4. 0 ; Depending on the context, [] either defines the size of an array (definition) or gives access to individual entries of an array (access). Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 28 of 47

33 Arrays & Pointers double grade [ 4 ] ; grade [ 0 ] = 1. 3 ; grade [ 2 ] = 3. 3 ; grade [ 3 ] = 1. 0 ; grade [ 1 ] = 4. 0 ; double p = grade ; i f ( grade [0]== p )... / / always t r u e i f ( grade [1]== ( p +1))... / / always t r u e An array variable is basically a pointer to the first element of the array. An array element access internally implies pointer arithmetics and dereferencing. Again, we thus have to range checks (size of array) at hand at all. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 29 of 47

34 Grades Revisited We need a range variable / Takes grades, computes the average, and retu / double computeaverage ( double grade, i n t numberofgrades ) { double r e s u l t = 0. 0 ; f o r ( i n t i =0; i<numberofgrades ; i ++) {... r e s u l t /= 4. 0 ; r e t u r n r e s u l t ;... double grade [ 4 ] ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 30 of 47

35 Array Arguments double computeaverage ( double grade [ ], i n t numberofgrades ) {... double computeaverage ( const double grade [ ], i n t numberofgrades ) {... This time, the user is not allowed to modify any entry of grade. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 31 of 47

36 Pitfalls i n t gradesbsc, gradesmsc [ 5 ] ; gradesmsc [ 5 ] = 2. 3 ; gradesmsc [ 3 ] + + ; i n t p0 = gradesmsc ; i n t p1 = &gradesmsc [ 0 ] ; i n t p2 = &gradesmsc [ 1 ] ; gradesmsc++; / / t h a t does not work p2++; / / a r r r g h Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 32 of 47

37 Dynamic Arrays double grades = new double [ 4 5 ] ; delete [ ] grades ; We can create arrays on the heap. Size might be a variable, too. Corresponding delete has to be a delete[]. delete without brackets just deletes the first value. If we omit delete, we will get a memory leak. If we use the array after delete or before new, it points to garbage (remember: grades is only a pointer). Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 33 of 47

38 Array As Return Functions double createthreerandomgrades ( ) { double r e s u l t [ 3 ] ; r e s u l t [ 0 ] = 1. 3 ; r e s u l t [ 1 ] = 2. 7 ; r e s u l t [ 2 ] = 1. 0 ; r e t u r n r e s u l t ; double createthreerandomgrades ( ) { double r e s u l t = new double [ 3 ] ; r e s u l t [ 0 ] = 1. 3 ; r e s u l t [ 1 ] = 2. 7 ; r e s u l t [ 2 ] = 1. 0 ; r e t u r n r e s u l t ; At the end of the scope, the pointer is destroyed always. Arrays on the heap are not destroyed. This is called a factory mechanism. Someone else invoking us has to delete the array. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 34 of 47

39 const Arrays double createthreerandomgrades ( ) { double r e s u l t [ 3 ] ; r e s u l t [ 0 ] = 1. 3 ; r e s u l t [ 1 ] = 2. 7 ; r e s u l t [ 2 ] = 1. 0 ; r e t u r n r e s u l t ; double createthreerandomgrades ( ) { double r e s u l t = new double [ 3 ] ; r e s u l t [ 0 ] = 1. 3 ; r e s u l t [ 1 ] = 2. 7 ; r e s u l t [ 2 ] = 1. 0 ; r e t u r n r e s u l t ; At the end of the scope, the pointer is destroyed always. Arrays on the heap are not destroyed. This is called a factory mechanism. Someone else invoking us has to delete the array. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 35 of 47

40 Multidimensional Arrays double matrix [ 4 ] [ 4 ] ; f o r ( i n t i =0; i <4; i ++) { f o r ( i n t j =0; j <4; j ++) { matrix [ i ] [ j ] = i == j? 1.0 : 0. 0 ; matrix [ 2 ] [ 1 ] = 1. 0 ; matrix [ 1 2 ] = 1. 0 ; What is the semantics of the for loop? Multidimensional arrays basically are flat arrays. C/C++ uses row-major format (different to Fortran). Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 36 of 47

41 Arrays of Structs s t r u c t Person { i n t age ; double weight ; ; Person couple [ 2 ] ; Person p = couple ; p++; C/C++ takes care of the memory padding. It stores the entries in the memory in the following order: couple[0].age, couple[0].weight, couple[1].age, couple[1].weight. The increment sets the pointer to the subsequent age address. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 37 of 47

42 Outlook C/C++ Arrays vs. Fortran Fortran is claimed to be the language for linear algebra as it is faster. Fortran does not provide pointers and dynamic data structures. Consequently, compiler can keep track of who has access where. Consequently, compiler can optimise aggressivly (it tries to keep book of all possible values an array could have side-effect!). So, it is all a matter of exclusivity and the const operator. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 38 of 47

43 6.5. Bubble Sort void s o r t ( i n t e n t r i e s [ ], const i n t & numberofentries ) { bool sorted = true ; while ( sorted ) { sorted = f a l s e ; f o r ( i n t i =0; i<numberofentries 1; i ++ ) { i f ( e n t r i e s [ i ]> e n t r i e s [ i + 1 ] ) {... sorted = true ; Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 39 of 47

44 Complexity of Bubble Sort Idea of bubble sort: Run over all elements in the list. Compare two subsequent elements whether they are in the correct order. Swap them if necessary. If a swap still had been necessary, run over list again. How expensive is th sorting? Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 40 of 47

45 Complexity of Bubble Sort Idea of bubble sort: Run over all elements in the list. Compare two subsequent elements whether they are in the correct order. Swap them if necessary. If a swap still had been necessary, run over list again. How expensive is th sorting? The number of comparisons is a good metric. So, let n be the number of elements in our list. At most (worst case), we ll need n runs over the list. In the average case, we ll need n/2 runs over the list. In each run, we have to do n 1 comparisons. Overall, the complexity is O(n 2 ). More intelligent (but more complex) sorting algorithms need only O(n log n) comparisons. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 40 of 47

46 6.6. Strings C has no string concept. C++ has a nice string concept. C has chars. And C has arrays. Thus, C has arrays of chars. And C has a mapping of numbers to chars. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 41 of 47

47 Codes The ASCII Code Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 42 of 47

48 Termination Codes for Arrays Memory 21: 22; 24 23; 12 24; 71 25; 71 26; 14 27; 0 28: 29: 30: 22 // s Lets have the following mapping: 0 Reserved (termination) 12 a 14 o 24 H 71 l Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 43 of 47

49 Strings as Arrays char s [ 6 ] ; s [ 0 ] = H ; s [ 1 ] = a ; s [ 2 ] = l ; s [ 3 ] = l ; s [ 4 ] = o ; s [ 5 ] = 0 ; Lets have the following mapping: 0 Reserved (termination) 12 a 14 o 24 H 71 l Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 44 of 47

50 Strings are Arrays char s [ 6 ] ; s [ 0 ] = H ; s [ 1 ] = a ; s [ 2 ] = l ; s [ 3 ] = l ; s [ 4 ] = o ; s [ 5 ] = 0 ; char mystring = Hallo ; We don t want to pass an integer with each string. Thus, C appends a 0 as last character. Thus, the array has one element more than the string has chars. Pascal follows a different variant. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 45 of 47

51 Operations on Strings Memory 21: 22; 24 23; 12 24; 71 25; 71 26; 14 27; 0 28: 29: 30: 22 // s Write a function length that takes a string and counts the number of entries. This number then is returned. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 46 of 47

52 Length Operation i n t length ( const char [ ] s ) { i n t length = 0; while ( s [ length ]==0) { length ++; return length ; char mystring = Hallo ; i n t lengthofmystring = length ( mystring ) ; What is copied here (call-by-value)! What happens, if we write char a n o t h e r S t r i n g = mystring ; How can we concatenate strings or add additional characters? How can we copy strings? How long is the string äbc, defg, and the concatenation of both of them in terms of a char array. Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 47 of 47

6. Pointers, Structs, and Arrays. 1. Juli 2011

6. Pointers, Structs, and Arrays. 1. Juli 2011 1. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 50 Outline Recapitulation Pointers Dynamic Memory Allocation Structs Arrays Bubble Sort Strings Einführung

More information

4. Functions. March 10, 2010

4. Functions. March 10, 2010 March 10, 2010 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 40 Outline Recapitulation Functions Part 1 What is a Procedure? Call-by-value and Call-by-reference Functions

More information

5. Applicative Programming. 1. Juli 2011

5. Applicative Programming. 1. Juli 2011 1. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 41 Outline Recapitulation Computer architecture extended: Registers and caches Header files Global variables

More information

Object-oriented Programming in C++

Object-oriented Programming in C++ Object-oriented Programming in C++ Working with C and C++ Wolfgang Eckhardt, Tobias Neckel March 23, 2015 Working with C and C++, March 23, 2015 1 Challenges of This Course Heterogeneity of the audience

More information

10. Object-oriented Programming. 7. Juli 2011

10. Object-oriented Programming. 7. Juli 2011 7. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 47 Outline Object Case Study Brain Teaser Copy Constructor & Operators Object-oriented Programming, i.e.

More information

Object-oriented Programming in C++

Object-oriented Programming in C++ Object-oriented Programming in C++ Working with C and C++ Wolfgang Eckhardt, Tobias Neckel June 30, 2014 Working with C and C++, June 30, 2014 1 Challenges of This Course Heterogeneity of the audience

More information

8. Object-oriented Programming. June 15, 2010

8. Object-oriented Programming. June 15, 2010 June 15, 2010 Introduction to C/C++, Tobias Weinzierl page 1 of 41 Outline Recapitulation Copy Constructor & Operators Object-oriented Programming Dynamic and Static Polymorphism The Keyword Static The

More information

Exercise 1.1 Hello world

Exercise 1.1 Hello world Exercise 1.1 Hello world The goal of this exercise is to verify that computer and compiler setup are functioning correctly. To verify that your setup runs fine, compile and run the hello world example

More information

PIC 10A Pointers, Arrays, and Dynamic Memory Allocation. Ernest Ryu UCLA Mathematics

PIC 10A Pointers, Arrays, and Dynamic Memory Allocation. Ernest Ryu UCLA Mathematics PIC 10A Pointers, Arrays, and Dynamic Memory Allocation Ernest Ryu UCLA Mathematics Pointers A variable is stored somewhere in memory. The address-of operator & returns the memory address of the variable.

More information

Pointers and Dynamic Memory Allocation

Pointers and Dynamic Memory Allocation Pointers and Dynamic Memory Allocation ALGORITHMS & DATA STRUCTURES 9 TH SEPTEMBER 2014 Last week Introduction This is not a course about programming: It s is about puzzling. well.. Donald Knuth Science

More information

a data type is Types

a data type is Types Pointers Class 2 a data type is Types Types a data type is a set of values a set of operations defined on those values in C++ (and most languages) there are two flavors of types primitive or fundamental

More information

COSC 2P95. Procedural Abstraction. Week 3. Brock University. Brock University (Week 3) Procedural Abstraction 1 / 26

COSC 2P95. Procedural Abstraction. Week 3. Brock University. Brock University (Week 3) Procedural Abstraction 1 / 26 COSC 2P95 Procedural Abstraction Week 3 Brock University Brock University (Week 3) Procedural Abstraction 1 / 26 Procedural Abstraction We ve already discussed how to arrange complex sets of actions (e.g.

More information

Object-Oriented Programming for Scientific Computing

Object-Oriented Programming for Scientific Computing Object-Oriented Programming for Scientific Computing Dynamic Memory Management Ole Klein Interdisciplinary Center for Scientific Computing Heidelberg University ole.klein@iwr.uni-heidelberg.de 2. Mai 2017

More information

CS201 Some Important Definitions

CS201 Some Important Definitions CS201 Some Important Definitions For Viva Preparation 1. What is a program? A program is a precise sequence of steps to solve a particular problem. 2. What is a class? We write a C++ program using data

More information

11. Generic Programming and Design Patterns. 8. Juli 2011

11. Generic Programming and Design Patterns. 8. Juli 2011 8. Juli 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 26 Outline Recapitulation Template Programming An Overview over the STL Design Patterns (skipped) Evaluation/feedback

More information

Principles of Programming Pointers, Dynamic Memory Allocation, Character Arrays, and Buffer Overruns

Principles of Programming Pointers, Dynamic Memory Allocation, Character Arrays, and Buffer Overruns Pointers, Dynamic Memory Allocation, Character Arrays, and Buffer Overruns What is an array? Pointers Memory issues The name of the array is actually a memory address. You can prove this by trying to print

More information

Pointers, Dynamic Data, and Reference Types

Pointers, Dynamic Data, and Reference Types Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation The new operator The delete operator Dynamic Memory Allocation for Arrays 1 C++ Data Types simple

More information

Discussion 1E. Jie(Jay) Wang Week 10 Dec.2

Discussion 1E. Jie(Jay) Wang Week 10 Dec.2 Discussion 1E Jie(Jay) Wang Week 10 Dec.2 Outline Dynamic memory allocation Class Final Review Dynamic Allocation of Memory Recall int len = 100; double arr[len]; // error! What if I need to compute the

More information

EE 355 Lab 4 - Party Like A Char Star

EE 355 Lab 4 - Party Like A Char Star 1 Introduction In this lab you will implement a "hangman" game where the user is shown blanks representing letter of a word and then tries to guess and fill in the letters with a limited number of guesses

More information

Consider the above code. This code compiles and runs, but has an error. Can you tell what the error is?

Consider the above code. This code compiles and runs, but has an error. Can you tell what the error is? Discussion 1H Notes (Week 8, May 20) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs31 Dynamic Allocation of Memory Recall that when you create an array, you must know

More information

Pointers II. Class 31

Pointers II. Class 31 Pointers II Class 31 Compile Time all of the variables we have seen so far have been declared at compile time they are written into the program code you can see by looking at the program how many variables

More information

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures The main body and cout Agenda 1 Fundamental data types Declarations and definitions Control structures References, pass-by-value vs pass-by-references The main body and cout 2 C++ IS AN OO EXTENSION OF

More information

Pointers and Arrays CS 201. This slide set covers pointers and arrays in C++. You should read Chapter 8 from your Deitel & Deitel book.

Pointers and Arrays CS 201. This slide set covers pointers and arrays in C++. You should read Chapter 8 from your Deitel & Deitel book. Pointers and Arrays CS 201 This slide set covers pointers and arrays in C++. You should read Chapter 8 from your Deitel & Deitel book. Pointers Powerful but difficult to master Used to simulate pass-by-reference

More information

CS 11 C track: lecture 5

CS 11 C track: lecture 5 CS 11 C track: lecture 5 Last week: pointers This week: Pointer arithmetic Arrays and pointers Dynamic memory allocation The stack and the heap Pointers (from last week) Address: location where data stored

More information

Introduction to Computer Science Midterm 3 Fall, Points

Introduction to Computer Science Midterm 3 Fall, Points Introduction to Computer Science Fall, 2001 100 Points Notes 1. Tear off this sheet and use it to keep your answers covered at all times. 2. Turn the exam over and write your name next to the staple. Do

More information

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/

CS61C Machine Structures. Lecture 4 C Pointers and Arrays. 1/25/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/ CS61C Machine Structures Lecture 4 C Pointers and Arrays 1/25/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L04 C Pointers (1) Common C Error There is a difference

More information

Object Reference and Memory Allocation. Questions:

Object Reference and Memory Allocation. Questions: Object Reference and Memory Allocation Questions: 1 1. What is the difference between the following declarations? const T* p; T* const p = new T(..constructor args..); 2 2. Is the following C++ syntax

More information

C Programming. Course Outline. C Programming. Code: MBD101. Duration: 10 Hours. Prerequisites:

C Programming. Course Outline. C Programming. Code: MBD101. Duration: 10 Hours. Prerequisites: C Programming Code: MBD101 Duration: 10 Hours Prerequisites: You are a computer science Professional/ graduate student You can execute Linux/UNIX commands You know how to use a text-editing tool You should

More information

Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types

Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types Chapter 6 Topics WEEK E FOUR Data Types Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference

More information

Run Time Environment

Run Time Environment CS 403 Compiler Construction Lecture 12 Run Time Environment and Management [Based on Chapter 7 of Aho2] 1 Run Time Environment From Lecture 1 to 11, we have seen many jobs that are done by a compiler.

More information

Review of Important Topics in CS1600. Functions Arrays C-strings

Review of Important Topics in CS1600. Functions Arrays C-strings Review of Important Topics in CS1600 Functions Arrays C-strings Array Basics Arrays An array is used to process a collection of data of the same type Examples: A list of names A list of temperatures Why

More information

CISC220 Lab 2: Due Wed, Sep 26 at Midnight (110 pts)

CISC220 Lab 2: Due Wed, Sep 26 at Midnight (110 pts) CISC220 Lab 2: Due Wed, Sep 26 at Midnight (110 pts) For this lab you may work with a partner, or you may choose to work alone. If you choose to work with a partner, you are still responsible for the lab

More information

Arrays in C++ Instructor: Andy Abreu

Arrays in C++ Instructor: Andy Abreu Arrays in C++ Instructor: Andy Abreu Reason behind the idea When we are programming, often we have to process a large amount of information. We can do so by creating a lot of variables to keep track of

More information

CE221 Programming in C++ Part 2 References and Pointers, Arrays and Strings

CE221 Programming in C++ Part 2 References and Pointers, Arrays and Strings CE221 Programming in C++ Part 2 References and Pointers, Arrays and Strings 19/10/2017 CE221 Part 2 1 Variables and References 1 In Java a variable of primitive type is associated with a memory location

More information

8. The C++ language, 1. Programming and Algorithms II Degree in Bioinformatics Fall 2017

8. The C++ language, 1. Programming and Algorithms II Degree in Bioinformatics Fall 2017 8. The C++ language, 1 Programming and Algorithms II Degree in Bioinformatics Fall 2017 Hello world #include using namespace std; int main() { } cout

More information

Patterns: Working with Arrays

Patterns: Working with Arrays Steven Zeil October 14, 2013 Outline 1 Static & Dynamic Allocation Static Allocation Dynamic Allocation 2 Partially Filled Arrays Adding Elements Searching for Elements Removing Elements 3 Arrays and Templates

More information

CSCI-1200 Data Structures Fall 2017 Lecture 5 Pointers, Arrays, & Pointer Arithmetic

CSCI-1200 Data Structures Fall 2017 Lecture 5 Pointers, Arrays, & Pointer Arithmetic CSCI-1200 Data Structures Fall 2017 Lecture 5 Pointers, Arrays, & Pointer Arithmetic Review from Letctures 3 & 4 C++ class syntax, designing classes, classes vs. structs; Passing comparison functions to

More information

Memory and Pointers written by Cathy Saxton

Memory and Pointers written by Cathy Saxton Memory and Pointers written by Cathy Saxton Basic Memory Layout When a program is running, there are three main chunks of memory that it is using: A program code area where the program itself is loaded.

More information

Before we start - Announcements: There will be a LAB TONIGHT from 5:30 6:30 in CAMP 172. In compensation, no class on Friday, Jan. 31.

Before we start - Announcements: There will be a LAB TONIGHT from 5:30 6:30 in CAMP 172. In compensation, no class on Friday, Jan. 31. Before we start - Announcements: There will be a LAB TONIGHT from 5:30 6:30 in CAMP 172 The lab will be on pointers In compensation, no class on Friday, Jan. 31. 1 Consider the bubble function one more

More information

Fast Introduction to Object Oriented Programming and C++

Fast Introduction to Object Oriented Programming and C++ Fast Introduction to Object Oriented Programming and C++ Daniel G. Aliaga Note: a compilation of slides from Jacques de Wet, Ohio State University, Chad Willwerth, and Daniel Aliaga. Outline Programming

More information

CS558 Programming Languages Winter 2018 Lecture 4a. Andrew Tolmach Portland State University

CS558 Programming Languages Winter 2018 Lecture 4a. Andrew Tolmach Portland State University CS558 Programming Languages Winter 2018 Lecture 4a Andrew Tolmach Portland State University 1994-2018 Pragmatics of Large Values Real machines are very efficient at handling word-size chunks of data (e.g.

More information

C++ for Java Programmers

C++ for Java Programmers Basics all Finished! Everything we have covered so far: Lecture 5 Operators Variables Arrays Null Terminated Strings Structs Functions 1 2 45 mins of pure fun Introduction Today: Pointers Pointers Even

More information

Agenda. Peer Instruction Question 1. Peer Instruction Answer 1. Peer Instruction Question 2 6/22/2011

Agenda. Peer Instruction Question 1. Peer Instruction Answer 1. Peer Instruction Question 2 6/22/2011 CS 61C: Great Ideas in Computer Architecture (Machine Structures) Introduction to C (Part II) Instructors: Randy H. Katz David A. Patterson http://inst.eecs.berkeley.edu/~cs61c/sp11 Spring 2011 -- Lecture

More information

Arrays and functions Multidimensional arrays Sorting and algorithm efficiency

Arrays and functions Multidimensional arrays Sorting and algorithm efficiency Introduction Fundamentals Declaring arrays Indexing arrays Initializing arrays Arrays and functions Multidimensional arrays Sorting and algorithm efficiency An array is a sequence of values of the same

More information

Arrays. Comp Sci 1570 Introduction to C++ Array basics. arrays. Arrays as parameters to functions. Sorting arrays. Random stuff

Arrays. Comp Sci 1570 Introduction to C++ Array basics. arrays. Arrays as parameters to functions. Sorting arrays. Random stuff and Arrays Comp Sci 1570 Introduction to C++ Outline and 1 2 Multi-dimensional and 3 4 5 Outline and 1 2 Multi-dimensional and 3 4 5 Array declaration and An array is a series of elements of the same type

More information

CS 103 Lab 6 - Party Like A Char Star

CS 103 Lab 6 - Party Like A Char Star 1 Introduction In this lab you will implement a "hangman" game where the user is shown blanks representing letter of a word and then tries to guess and fill in the letters with a limited number of guesses.

More information

pointers + memory double x; string a; int x; main overhead int y; main overhead

pointers + memory double x; string a; int x; main overhead int y; main overhead pointers + memory computer have memory to store data. every program gets a piece of it to use as we create and use more variables, more space is allocated to a program memory int x; double x; string a;

More information

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)

More information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011 More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors

More information

Memory and C++ Pointers

Memory and C++ Pointers Memory and C++ Pointers C++ objects and memory C++ primitive types and memory Note: primitive types = int, long, float, double, char, January 2010 Greg Mori 2 // Java code // in function, f int arr[];

More information

Scientific Computing

Scientific Computing Scientific Computing Martin Lotz School of Mathematics The University of Manchester Lecture 1, September 22, 2014 Outline Course Overview Programming Basics The C++ Programming Language Outline Course

More information

Pointers and References

Pointers and References Steven Zeil October 2, 2013 Contents 1 References 2 2 Pointers 8 21 Working with Pointers 8 211 Memory and C++ Programs 11 212 Allocating Data 15 22 Pointers Can Be Dangerous 17 3 The Secret World of Pointers

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

CA31-1K DIS. Pointers. TA: You Lu

CA31-1K DIS. Pointers. TA: You Lu CA31-1K DIS Pointers TA: You Lu Pointers Recall that while we think of variables by their names like: int numbers; Computer likes to think of variables by their memory address: 0012FED4 A pointer is a

More information

1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE?

1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE? 1. Describe History of C++? The C++ programming language has a history going back to 1979, when Bjarne Stroustrup was doing work for his Ph.D. thesis. One of the languages Stroustrup had the opportunity

More information

Arrays array array length fixed array fixed length array fixed size array Array elements and subscripting

Arrays array array length fixed array fixed length array fixed size array Array elements and subscripting Arrays Fortunately, structs are not the only aggregate data type in C++. An array is an aggregate data type that lets us access many variables of the same type through a single identifier. Consider the

More information

CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion

CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion CSCI-1200 Data Structures Spring 2018 Lecture 7 Order Notation & Basic Recursion Review from Lectures 5 & 6 Arrays and pointers, Pointer arithmetic and dereferencing, Types of memory ( automatic, static,

More information

CSCI-1200 Data Structures Spring 2014 Lecture 5 Pointers, Arrays, Pointer Arithmetic

CSCI-1200 Data Structures Spring 2014 Lecture 5 Pointers, Arrays, Pointer Arithmetic CSCI-1200 Data Structures Spring 2014 Lecture 5 Pointers, Arrays, Pointer Arithmetic Announcements: Test 1 Information Test 1 will be held Monday, February 10th, 2014 from 6-7:50pm, Lab sections 1-5 and

More information

CS2141 Software Development using C/C++ C++ Basics

CS2141 Software Development using C/C++ C++ Basics CS2141 Software Development using C/C++ C++ Basics Integers Basic Types Can be short, long, or just plain int C++ does not define the size of them other than short

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Lecture Notes on Memory Layout

Lecture Notes on Memory Layout Lecture Notes on Memory Layout 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 11 1 Introduction In order to understand how programs work, we can consider the functions,

More information

2. Variables, Identifiers, and Expressions. March 8, 2011

2. Variables, Identifiers, and Expressions. March 8, 2011 March 8, 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 34 Outline A Movie Structure of Simple C Codes Comments & Documentation Variables & Identifiers Built-in

More information

l Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive)

l Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive) Final Exam Exercises Chapters 1-7 + 11 Write C++ code to: l Determine if a number is odd or even CS 2308 Fall 2016 Jill Seaman l Determine if a number/character is in a range - 1 to 10 (inclusive) - between

More information

Chapter 6. Structured Data Types. Topics. Structured Data Types. Vectors and Arrays. Vectors. Vectors: subscripts

Chapter 6. Structured Data Types. Topics. Structured Data Types. Vectors and Arrays. Vectors. Vectors: subscripts Topics Chapter 6 Structured Data Types Vectors Arrays Slices Associative Arrays Records Unions Lists Sets 2 Structured Data Types Virtually all languages have included some mechanisms for creating complex

More information

Object Oriented Software Design II

Object Oriented Software Design II Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February

More information

For example, let s say we define an array of char of size six:

For example, let s say we define an array of char of size six: Arrays in C++ An array is a consecutive group of memory locations that all have the same name and the same type. To refer to a particular location, we specify the name and then the positive index into

More information

Arrays. Returning arrays Pointers Dynamic arrays Smart pointers Vectors

Arrays. Returning arrays Pointers Dynamic arrays Smart pointers Vectors Arrays Returning arrays Pointers Dynamic arrays Smart pointers Vectors To declare an array specify the type, its name, and its size in []s int arr1[10]; //or int arr2[] = {1,2,3,4,5,6,7,8}; arr2 has 8

More information

CPSC 3740 Programming Languages University of Lethbridge. Data Types

CPSC 3740 Programming Languages University of Lethbridge. Data Types Data Types A data type defines a collection of data values and a set of predefined operations on those values Some languages allow user to define additional types Useful for error detection through type

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2016 Lecture 3a Andrew Tolmach Portland State University 1994-2016 Formal Semantics Goal: rigorous and unambiguous definition in terms of a wellunderstood formalism (e.g.

More information

22c:111 Programming Language Concepts. Fall Types I

22c:111 Programming Language Concepts. Fall Types I 22c:111 Programming Language Concepts Fall 2008 Types I Copyright 2007-08, The McGraw-Hill Company and Cesare Tinelli. These notes were originally developed by Allen Tucker, Robert Noonan and modified

More information

Outline. 1 Function calls and parameter passing. 2 Pointers, arrays, and references. 5 Declarations, scope, and lifetimes 6 I/O

Outline. 1 Function calls and parameter passing. 2 Pointers, arrays, and references. 5 Declarations, scope, and lifetimes 6 I/O Outline EDAF30 Programming in C++ 2. Introduction. More on function calls and types. Sven Gestegård Robertz Computer Science, LTH 2018 1 Function calls and parameter passing 2 Pointers, arrays, and references

More information

Vector and Free Store (Vectors and Arrays)

Vector and Free Store (Vectors and Arrays) DM560 Introduction to Programming in C++ Vector and Free Store (Vectors and Arrays) Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark [Based on slides by Bjarne

More information

Quiz 0 Review Session. October 13th, 2014

Quiz 0 Review Session. October 13th, 2014 Quiz 0 Review Session October 13th, 2014 Topics (non-exhaustive) Binary. ASCII. Algorithms. Pseudocode. Source code. Compiler. Object code. Scratch. Statements. Boolean expressions. Conditions. Loops.

More information

Understand Execution of a Program

Understand Execution of a Program Understand Execution of a Program Prof. Zhang September 17, 2014 1 Program in Memory When you execute a program, the program (i.e., executable code) is loaded into the memory (i.e., main memory, RAM) in

More information

CS 103 Lab - Party Like A Char Star

CS 103 Lab - Party Like A Char Star 1 Introduction In this lab you will implement a "hangman" game where the user is shown blanks representing letter of a word and then tries to guess and fill in the letters with a limited number of guesses.

More information

C++ Arrays and Vectors

C++ Arrays and Vectors C++ Arrays and Vectors Contents 1 Overview of Arrays and Vectors 2 2 Arrays 3 2.1 Declaring Arrays................................................. 3 2.2 Initializing Arrays................................................

More information

QUIZ. What is wrong with this code that uses default arguments?

QUIZ. What is wrong with this code that uses default arguments? QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code

More information

CS 61c: Great Ideas in Computer Architecture

CS 61c: Great Ideas in Computer Architecture Arrays, Strings, and Some More Pointers June 24, 2014 Review of Last Lecture C Basics Variables, functioss, control flow, types, structs Only 0 and NULL evaluate to false Pointers hold addresses Address

More information

Ch. 12: Operator Overloading

Ch. 12: Operator Overloading Ch. 12: Operator Overloading Operator overloading is just syntactic sugar, i.e. another way to make a function call: shift_left(42, 3); 42

More information

377 Student Guide to C++

377 Student Guide to C++ 377 Student Guide to C++ c Mark Corner January 21, 2004 1 Introduction In this course you will be using the C++ language to complete several programming assignments. Up to this point we have only provided

More information

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309 A Arithmetic operation floating-point arithmetic, 11 12 integer numbers, 9 11 Arrays, 97 copying, 59 60 creation, 48 elements, 48 empty arrays and vectors, 57 58 executable program, 49 expressions, 48

More information

Variables, Memory and Pointers

Variables, Memory and Pointers Variables, Memory and Pointers A variable is a named piece of memory The name stands in for the memory address int num; Variables, Memory and Pointers When a value is assigned to a variable, it is stored

More information

Functions, Pointers, and the Basics of C++ Classes

Functions, Pointers, and the Basics of C++ Classes Functions, Pointers, and the Basics of C++ Classes William E. Skeith III Functions in C++ Vocabulary You should be familiar with all of the following terms already, but if not, you will be after today.

More information

Lecture 14. No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions?

Lecture 14. No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions? Lecture 14 No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions? Friday, February 11 CS 215 Fundamentals of Programming II - Lecture 14 1 Outline Static

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter

More information

Programming in C/C Lecture 2

Programming in C/C Lecture 2 Programming in C/C++ 2005-2006 Lecture 2 http://few.vu.nl/~nsilvis/c++/2006 Natalia Silvis-Cividjian e-mail: nsilvis@few.vu.nl vrije Universiteit amsterdam News Check announcements on the C/C++ website

More information

Chapter 2. C++ Syntax and Semantics, and the Program Development Process. Dale/Weems 1

Chapter 2. C++ Syntax and Semantics, and the Program Development Process. Dale/Weems 1 Chapter 2 C++ Syntax and Semantics, and the Program Development Process Dale/Weems 1 Chapter 2 Topics Programs Composed of Several Functions Syntax Templates Legal C++ Identifiers Assigning Values to Variables

More information

CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING C ++ Basics Review part 2 Auto pointer, templates, STL algorithms

CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING C ++ Basics Review part 2 Auto pointer, templates, STL algorithms CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING 2011 C ++ Basics Review part 2 Auto pointer, templates, STL algorithms AUTO POINTER (AUTO_PTR) //Example showing a bad situation with naked pointers void MyFunction()

More information

Lab#5 Due Wednesday, February 25, at the start of class. Purpose: To develop familiarity with C++ pointer variables

Lab#5 Due Wednesday, February 25, at the start of class. Purpose: To develop familiarity with C++ pointer variables Lab#5 Due Wednesday, February 25, at the start of class Purpose: To develop familiarity with C++ pointer variables Introduction: In this lab, you will learn by experimentation the answers to some questions

More information

JAVA An overview for C++ programmers

JAVA An overview for C++ programmers JAVA An overview for C++ programmers Wagner Truppel wagner@cs.ucr.edu edu March 1st, 2004 The early history James Gosling, Sun Microsystems Not the usual start for a prog.. language Consumer electronics,

More information

1/29/2011 AUTO POINTER (AUTO_PTR) INTERMEDIATE SOFTWARE DESIGN SPRING delete ptr might not happen memory leak!

1/29/2011 AUTO POINTER (AUTO_PTR) INTERMEDIATE SOFTWARE DESIGN SPRING delete ptr might not happen memory leak! //Example showing a bad situation with naked pointers CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING 2011 C ++ Basics Review part 2 Auto pointer, templates, STL algorithms void MyFunction() MyClass* ptr( new

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 4 C Pointers 2004-09-08 Lecturer PSOE Dan Garcia www.cs.berkeley.edu/~ddgarcia Cal flies over Air Force We re ranked 13 th in the US and

More information

WARM UP LESSONS BARE BASICS

WARM UP LESSONS BARE BASICS WARM UP LESSONS BARE BASICS CONTENTS Common primitive data types for variables... 2 About standard input / output... 2 More on standard output in C standard... 3 Practice Exercise... 6 About Math Expressions

More information

CSE 333 Midterm Exam 7/25/16. Name UW ID#

CSE 333 Midterm Exam 7/25/16. Name UW ID# Name UW ID# There are 7 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed book, closed notes,

More information

Pointers in C/C++ 1 Memory Addresses 2

Pointers in C/C++ 1 Memory Addresses 2 Pointers in C/C++ Contents 1 Memory Addresses 2 2 Pointers and Indirection 3 2.1 The & and * Operators.............................................. 4 2.2 A Comment on Types - Muy Importante!...................................

More information

Midterm Practice Exam

Midterm Practice Exam Name: CS 410 Introduction to Software Engineering Fall 2016 Instructor: Marc Pomplun Midterm Practice Exam Duration: 75 minutes No books, no notes, and no calculators are allowed. Question 1: out of points

More information

CSCI-1200 Data Structures Fall 2017 Lecture 9 Iterators & STL Lists

CSCI-1200 Data Structures Fall 2017 Lecture 9 Iterators & STL Lists Review from Lecture 8 CSCI-1200 Data Structures Fall 2017 Lecture 9 Iterators & STL Lists Designing our own container classes Dynamically allocated memory in classes Copy constructors, assignment operators,

More information

Advanced Programming & C++ Language

Advanced Programming & C++ Language Advanced Programming & C++ Language ~6~ Introduction to Memory Management Ariel University 2018 Dr. Miri (Kopel) Ben-Nissan Stack & Heap 2 The memory a program uses is typically divided into four different

More information

FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each):

FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each): FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each): 1. If a function has default arguments, they can be located anywhere

More information

Outline. Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples.

Outline. Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples. Outline Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples. 1 Arrays I Array One type of data structures. Consecutive group of memory locations

More information