Consider the above code. This code compiles and runs, but has an error. Can you tell what the error is?
|
|
- Allan McDowell
- 5 years ago
- Views:
Transcription
1 Discussion 1H Notes (Week 8, May 20) TA: Brian Choi Section Webpage: Dynamic Allocation of Memory Recall that when you create an array, you must know the exact size of the array you re creating. You cannot use a variable to specify the size of an array, as follows: int len = 100; double arr[len]; // error! But there are cases when the size of an array cannot be determined a priori. In such cases, the best bet for you is to estimate the largest possible size and use it to create a long array. This does not completely solve the problem, as the actual size you need might still exceed your estimate, or the estimate might be too big that the array is not utilized 100% most of the time. For better memory utilization, you d like to use just enough memory by computing the size on-the-fly, or dynamically, and allocating exactly that much amount of memory for your array. Such a task is done as follows: int len = 100; double *arr = new double[len]; This will create an array of doubles, with the first element pointed by the pointer arr. The length of an array can be a variable this time. More precisely, the expression new double[len] creates an array dynamically, and returns the pointer to the first element of the array. We assign the returned pointer to a pointer variable, so we can keep track of the array we just created. int *func(); // Creates an array of length 10 and returns it. int *p = func(); /* Do something about this array. */ return 0; int *func() int arr[10]; return arr; // Create an array. // Return the array. Consider the above code. This code compiles and runs, but has an error. Can you tell what the error is? When func() gets called, as we have seen in the previous section, a new stack of memory is allocated for func(). All variables are created in this area, with no exception for arrays. Therefore, the line int arr[10] will create an array of 10 integers in the func() stack, with a pointer arr (also locally created) pointing to this array. Now one might think if we return the pointer, then we can use this array. This is partially correct. A pointer is memory location, and thus p will point to the location of this array. However, when func() returns and exits, this stack disappears! Suddenly the memory location p points to is invalid. (You will probably get a warning from the compiler.) See the diagram (a) on the next page. Copyright Brian Choi All Rights Reserved. Week 8, Page 1/6
2 Here is the correct code. (a) static case (b) dynamic case int *p = func(); /* Do something about this array. */ delete[] p; return 0; int* func() int* arr = new int[10]; // dynamic return arr; func() now dynamically creates an array. This array is not created in the stack! There is a place dedicated for dynamic data, called heap. Things in heap do not go away even after the function returns, so when func () terminates, the array still remains in the memory. What p points to is a valid location this time. We must be careful, though. Everything you create in stack will be removed from memory once you return, so you need not worry about deleting the data. The ones in heap are not going to be deleted until you delete them yourself. delete[] p; will delete the array pointed by p. So why not create everything in heap? It turns out memory management is a complicated issue. int *p = func(); p = new int[10]; // Create another array and let p point to it. What is the issue here? Do you see it? Copyright Brian Choi All Rights Reserved. Week 8, Page 2/6
3 Memory Leak The variables that are created dynamically do not have names. We refer to such a variable by keeping a pointer that points to the memory location at which the variable is created. What happens if we lose the pointer that points to this variable? int *p; p = new int[10]; p = new int[8]; We first create an array of size 10 and make p point to it. Then we create another array of size 8 and make p point to it, causing p to lose its previous value. Now the first array is not pointed by any pointer, and there is no way we can access it anymore. This means we cannot delete the array either. So we have a ghost that doesn t do anything yet eats up our memory. This is a problem, and we call this phenomenon memory leak. C++ compiler cannot detect this problem, thus developers must be extra cautious to avoid such a problem. If you are not going to use an array anymore, delete it. If you need to use it in the future, create another pointer and save the location. Creating a Single Variable Dynamically A variable is simply an array of size 1, so one can do: int *p = new int[1]; to create a single variable. Alternatively, one can do: int *p = new int; to create a single variable, by not specifying the size at all. To delete a single variable, you should: delete p; Delete Rule So here s a simple rule you need to remember: For each new statement, there should be one delete statement. This means you cannot use a single delete statement to delete objects that are created using more than one new statement. This also means you cannot use a delete statement to partially delete an object (like an array). An example follows: int *parr[10]; for (int i = 0; i < 10; i++) parr[i] = new int; // This is an array of pointers. // Create an integer for each element in parr. /* Do something useful with the array */ // delete[] parr; // No!!! for (int i = 0; i < 10; i++) // You need 10 delete s since you used 10 new s. delete parr[i]; Copyright Brian Choi All Rights Reserved. Week 8, Page 3/6
4 Pointer Practice What is the output of the following programs? int mystery(int *p) *p = 11; *(p + 1) = 12; p += 3; *(p + 1) = 15; int arr[5] = 1, 2, 3, 5, 8; mystery(arr); int mystery2(int *p) for (int i = 0; i < 5; i++) *(p + i) = i; int *arr = new int[5]; mystery2(arr); for (int i = 0; i < 5; i++) cout << arr[i] << ; for (int i = 0; i < 5; i++) cout << arr[i] << ; Question: Write a function that returns the pointer to a dynamically created array of length n, with the first n Fibonacci numbers. int *fibo(int n) // return NULL if n <= 0 int n; cout << How many Fibonacci numbers do you want to see? ; cin >> n; int *p = fibo(n); for (int i = 0; i < n; i++) cout << p[i] << ; // should print if (p!= NULL) delete[] p; // Make sure we delete the array. Copyright Brian Choi All Rights Reserved. Week 8, Page 4/6
5 Structures Suppose I, as your TA, want to write a simple database software that will store a list of you (students) who are enrolled in my class. I want to store your name, student ID, address, and the letter grade. For 23 students who are enrolled, I will have to create the following arrays: const int NUM_STUDENTS = 32; string names[num_students]; int ids[num_students]; string s[num_students]; char grades[num_students]; // for names // for IDs // for addresses // for grades This is really messy. For instance, if I were to swap two records, then I would need to perform 4 swap operations, one for each array I have here. If I can group the information that pertains to a particular student, it s going to be a lot more managable. This grouping mechanism is provided by what s called a structure. You can think of it as a new compound data type which you can customize using existing data types (like int, double, etc.). I can create a Student structure as follows. struct Student string name; int id; string ; char grade; ; // Notice that there s a semicolon that ends the definition This means each Student consists of 4 components. Each component is called the member of the structure. You can almost treat a structure as if it were just another type. You can create a Student variable by: Student st; where st is just an identifier (name). It s also possible to create an array of Students by doing: Student students[num_students]; which is equivalent to the 4-array version up there. The question now is how to access those members of a structure. You can access it by using a. (dot). Here are just a few examples: st.name = Joe Bruin ; // st s name is set to Joe Bruin students[10].id = ; // the 10-th Student in students array is assigned an ID cout << st.grade << endl; // print the grade of st cout << students[0]. << endl; // print the 0-th Stduent s address If you completely understand the 4 expressions above, you pretty much know everything you need to know about structures. To make sure, though, let s write a couple of functions that use this Student structure of ours. Copyright Brian Choi All Rights Reserved. Week 8, Page 5/6
6 Exercise: Define an array that takes in an array of Students and returns the GPA for the class. Assume a grade is either an A, B, C, D, or F, where the points assigned are 4, 3, 2, 1, and 0, respectively. double findgpa(student students[], int n) Exercise: Define a function printastudents that takes in an array of Students and prints the names of all students with A s. void printastudents(student students[], int n) Pointers to Structures A pointer to a structure can be defined the same way as before: Student *p; You can refer to a member of the structure pointed by p by first dereferencing it and using the dot operator. (*p).name There is nothing new about it. But here s something new: the above expression is equivalent to the following shortcut: p->name This works only if p is a pointer. We don t mean to confuse you by telling you of this shortcut. Just stick to one way that comes more natural to you. Copyright Brian Choi All Rights Reserved. Week 8, Page 6/6
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 informationCS31 Discussion. Jie(Jay) Wang Week8 Nov.18
CS31 Discussion Jie(Jay) Wang Week8 Nov.18 Outline Pointer Struct Memory Management When the program gets executed, it gets some amount of memory allocated for use. memory Program 1 Program 2 Memory Management
More informationCS 31 Discussion ABDULLAH-AL-ZUBAER IMRAN WEEK 6: C-STRINGS, STRUCT, CLASS AND PROJECT4
CS 31 Discussion ABDULLAH-AL-ZUBAER IMRAN WEEK 6: C-STRINGS, STRUCT, CLASS AND PROJECT4 Recap Functions Parameter passing: pass by reference Strings Letter to digit and vice-versa Library functions: string
More informationDiscussion 1H Notes (Week 3, April 14) TA: Brian Choi Section Webpage:
Discussion 1H Notes (Week 3, April 14) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs31 More on Arithmetic Expressions The following two are equivalent:! x = x + 5;
More informationCA31-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 informationWeek 8. Muhao Chen
Week 8 Muhao Chen muhaochen@ucla.edu 1 Outline Review Pointers and references Dynamic memory allocation Struct 2 Pointers 3 Pointers Pointer: Address of a variable in the memory. Declare a pointer (use
More information377 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 informationTHE GOOD, BAD AND UGLY ABOUT POINTERS. Problem Solving with Computers-I
THE GOOD, BAD AND UGLY ABOUT POINTERS Problem Solving with Computers-I The good: Pointers pass data around efficiently Pointers and arrays 100 104 108 112 116 ar 20 30 50 80 90 ar is like a pointer to
More informationPointers, Arrays and Parameters
Pointers, Arrays and Parameters This exercise is different from our usual exercises. You don t have so much a problem to solve by creating a program but rather some things to understand about the programming
More informationPrinciples 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 information6. 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 information6. Pointers, Structs, and Arrays. March 14 & 15, 2011
March 14 & 15, 2011 Einführung in die Programmierung Introduction to C/C++, Tobias Weinzierl page 1 of 47 Outline Recapitulation Pointers Dynamic Memory Allocation Structs Arrays Bubble Sort Strings Einführung
More informationDiscussion 2C Notes (Week 5, February 4) TA: Brian Choi Section Webpage:
Discussion 2C Notes (Week 5, February 4) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Recursion A recursion is a function-writing technique where the function
More informationLecture 2, September 4
Lecture 2, September 4 Intro to C/C++ Instructor: Prashant Shenoy, TA: Shashi Singh 1 Introduction C++ is an object-oriented language and is one of the most frequently used languages for development due
More informationVariables, 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 informationCSCI 262 Data Structures. Arrays and Pointers. Arrays. Arrays and Pointers 2/6/2018 POINTER ARITHMETIC
CSCI 262 Data Structures 9 Dynamically Allocated Memory POINTERS AND ARRAYS 2 Arrays Arrays are just sequential chunks of memory: Arrays and Pointers Array variables are secretly pointers: x19 x18 x17
More informationComp 11 Lectures. Mike Shah. June 26, Tufts University. Mike Shah (Tufts University) Comp 11 Lectures June 26, / 57
Comp 11 Lectures Mike Shah Tufts University June 26, 2017 Mike Shah (Tufts University) Comp 11 Lectures June 26, 2017 1 / 57 Please do not distribute or host these slides without prior permission. Mike
More informationDiscussion 2C Notes (Week 5, February 4) TA: Brian Choi Section Webpage:
Discussion 2C Notes (Week 5, February 4) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Recursion A recursion is a function-writing technique where the function
More informationDiscussion 2C Notes (Week 3, January 21) TA: Brian Choi Section Webpage:
Discussion 2C Notes (Week 3, January 21) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Abstraction In Homework 1, you were asked to build a class called Bag. Let
More informationArrays. 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 informationCISC220 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 informationMemory 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 informationSection Notes - Week 1 (9/17)
Section Notes - Week 1 (9/17) Why do we need to learn bits and bitwise arithmetic? Since this class is about learning about how computers work. For most of the rest of the semester, you do not have to
More informationHeap Arrays. Steven R. Bagley
Heap Arrays Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index a[42] = 35; Variables and arrays have a type int, char, double,
More informationWeek 7 Part I. Kyle Dewey. Monday, August 6, 12
Week 7 Part I Kyle Dewey Overview Code from last time Array initialization Pointers vs. arrays Structs typedef Bubble sort (if time) Code Wrap-Up Array Initialization // fine int arr1[3] = { 1, 2 3 };...
More informationLecture 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 informationCS 31: Intro to Systems Pointers and Memory. Martin Gagne Swarthmore College February 16, 2016
CS 31: Intro to Systems Pointers and Memory Martin Gagne Swarthmore College February 16, 2016 So we declared a pointer How do we make it point to something? 1. Assign it the address of an existing variable
More informationCOSC 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 informationLab 8. Follow along with your TA as they demo GDB. Make sure you understand all of the commands, how and when to use them.
Lab 8 Each lab will begin with a recap of last lab and a brief demonstration by the TAs for the core concepts examined in this lab. As such, this document will not serve to tell you everything the TAs
More informationC++ 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 informationCS 31: Intro to Systems Pointers and Memory. Kevin Webb Swarthmore College October 2, 2018
CS 31: Intro to Systems Pointers and Memory Kevin Webb Swarthmore College October 2, 2018 Overview How to reference the location of a variable in memory Where variables are placed in memory How to make
More informationPointers. 1 Background. 1.1 Variables and Memory. 1.2 Motivating Pointers Massachusetts Institute of Technology
Introduction to C++ Massachusetts Institute of Technology ocw.mit.edu 6.096 Pointers 1 Background 1.1 Variables and Memory When you declare a variable, the computer associates the variable name with a
More informationDiscussion 1H Notes (Week 2, 4/8) TA: Brian Choi Section Webpage:
Discussion 1H Notes (Week 2, 4/8) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs31 Variables You have to instruct your computer every little thing it needs to do even
More informationLecture 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 informationMemory 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 informationENJOY! Problem 2 What does the following code do, in a brief English sentence? int mystery(int k) { int i = 0; if (k < 0) return -1;
Midterm Practice Problems TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs31 ENJOY! Problem 1 True False Variable names can begin with an alphabet or a digit. True False
More informationPatterns: 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 informationPointers 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 informationQUIZ. What are 3 differences between C and C++ const variables?
QUIZ What are 3 differences between C and C++ const variables? Solution QUIZ Source: http://stackoverflow.com/questions/17349387/scope-of-macros-in-c Solution The C/C++ preprocessor substitutes mechanically,
More informationCS31: Introduction to Computer Science I Spring 2011
Final Practice TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs31 1. Assume the following variable declarations: int foo = 0; int *ptr = &foo; Which of the following
More informationChapter 17 vector and Free Store. Bjarne Stroustrup
Chapter 17 vector and Free Store Bjarne Stroustrup www.stroustrup.com/programming Overview Vector revisited How are they implemented? Pointers and free store Allocation (new) Access Arrays and subscripting:
More informationPIC 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 informationWe do not teach programming
We do not teach programming We do not teach C Take a course Read a book The C Programming Language, Kernighan, Richie Georgios Georgiadis Negin F.Nejad This is a brief tutorial on C s traps and pitfalls
More informationCOMP 11 Class 17 Outline
COMP 11 Class 17 Outline Topics: Dynamic Arrays and Memory 2 Approach: Main Ideas: Discussion, Explanation, Discussion Memory allocation and pointers 1. Admin a) Sentegy Study Announcment b) Project 2A
More informationFor 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 informationPointers 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 informationArrays 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 informationExercise 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 informationa 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 informationCS201- Introduction to Programming Current Quizzes
CS201- Introduction to Programming Current Quizzes Q.1 char name [] = Hello World ; In the above statement, a memory of characters will be allocated 13 11 12 (Ans) Q.2 A function is a block of statements
More informationHeap Arrays and Linked Lists. Steven R. Bagley
Heap Arrays and Linked Lists Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index Variables and arrays have a type Create our
More information1 Dynamic Memory continued: Memory Leaks
CS104: Data Structures and Object-Oriented Design (Fall 2013) September 3, 2013: Dynamic Memory, continued; A Refresher on Recursion Scribes: CS 104 Teaching Team Lecture Summary In this lecture, we continue
More informationstatic CS106L Spring 2009 Handout #21 May 12, 2009 Introduction
CS106L Spring 2009 Handout #21 May 12, 2009 static Introduction Most of the time, you'll design classes so that any two instances of that class are independent. That is, if you have two objects one and
More informationDiscussion 1H Notes (Week 4, April 22) TA: Brian Choi Section Webpage:
Discussion 1H Notes (Week 4, April 22) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs31 Passing Arguments By Value and By Reference So far, we have been passing in
More informationFunctions, 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 informationComplex data types Structures Defined types Structures and functions Structures and pointers (Very) brief introduction to the STL
Complex data types Structures Defined types Structures and functions Structures and pointers (Very) brief introduction to the STL Many programs require complex data to be represented That cannot easily
More informationLinked Memory. Pointers Linked Lists. September 21, 2017 Cinda Heeren / Geoffrey Tien 1
Linked Memory Pointers Linked Lists September 21, 2017 Cinda Heeren / Geoffrey Tien 1 Releasing Dynamic Memory When a function call is complete its stack memory is released and can be re-used Dynamic memory
More informationPointers Ch 9, 11.3 & 13.1
Pointers Ch 9, 11.3 & 13.1 Highlights - const & passing-by-referencence - pointers - new and delete object vs memory address An object is simply a box in memory and if you pass this into a function it
More informationSeparate Compilation Model
Separate Compilation Model Recall: For a function call to compile, either the function s definition or declaration must appear previously in the same file. Goal: Compile only modules affected by recent
More informationComputer Programming
Computer Programming Dr. Deepak B Phatak Dr. Supratik Chakraborty Department of Computer Science and Engineering Session: Pointers and Dynamic Memory Part 1 Dr. Deepak B. Phatak & Dr. Supratik Chakraborty,
More informationLinked Memory. Pointers Linked Lists. January 19, 2018 Cinda Heeren / Geoffrey Tien 1
Linked Memory Pointers Linked Lists January 19, 2018 Cinda Heeren / Geoffrey Tien 1 Addresses and pointers Every storage location in memory (RAM) has an address associated with it The address is the location
More informationLAB 4.1 Relational Operators and the if Statement
LAB 4.1 Relational Operators and the if Statement // This program tests whether or not an initialized value of num2 // is equal to a value of num1 input by the user. int main( ) int num1, // num1 is not
More informationAdministrivia. Introduction to Computer Systems. Pointers, cont. Pointer example, again POINTERS. Project 2 posted, due October 6
CMSC 313 Introduction to Computer Systems Lecture 8 Pointers, cont. Alan Sussman als@cs.umd.edu Administrivia Project 2 posted, due October 6 public tests s posted Quiz on Wed. in discussion up to pointers
More informationCS31 Discussion 1E. Jie(Jay) Wang Week3 Oct.12
CS31 Discussion 1E Jie(Jay) Wang Week3 Oct.12 Outline Problems from Project 1 Review of lecture String, char, stream If-else statements Switch statements loops Programming challenge Problems from Project
More informationLAB 5, THE HIDDEN DELIGHTS OF LINKED LISTS
LAB 5, THE HIDDEN DELIGHTS OF LINKED LISTS Questions are based on the Main and Savitch review questions for chapter 5 in the Exam Preparation section of the webct course page. In case you haven t observed
More informationEE 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 informationLab 2: Pointers. //declare a pointer variable ptr1 pointing to x. //change the value of x to 10 through ptr1
Lab 2: Pointers 1. Goals Further understanding of pointer variables Passing parameters to functions by address (pointers) and by references Creating and using dynamic arrays Combing pointers, structures
More informationQUIZ How do we implement run-time constants and. compile-time constants inside classes?
QUIZ How do we implement run-time constants and compile-time constants inside classes? Compile-time constants in classes The static keyword inside a class means there s only one instance, regardless of
More informationPointer Basics. Lecture 13 COP 3014 Spring March 28, 2018
Pointer Basics Lecture 13 COP 3014 Spring 2018 March 28, 2018 What is a Pointer? A pointer is a variable that stores a memory address. Pointers are used to store the addresses of other variables or memory
More informationCSE 333 Midterm Exam 5/10/13
Name There are 5 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, closed
More informationCMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 13, SPRING 2013
CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 13, SPRING 2013 TOPICS TODAY Reminder: MIDTERM EXAM on THURSDAY Pointer Basics Pointers & Arrays Pointers & Strings Pointers & Structs
More informationCS24 Week 3 Lecture 1
CS24 Week 3 Lecture 1 Kyle Dewey Overview Some minor C++ points ADT Review Object-oriented Programming C++ Classes Constructors Destructors More minor Points (if time) Key Minor Points const Motivation
More informationcout << "How many numbers would you like to type? "; cin >> memsize; p = new int[memsize];
1 C++ Dynamic Allocation Memory needs were determined before program execution by defining the variables needed. Sometime memory needs of a program can only be determined during runtime, or the memory
More informationCE221 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 informationVector and Free Store (Pointers and Memory Allocation)
DM560 Introduction to Programming in C++ Vector and Free Store (Pointers and Memory Allocation) Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark [Based on slides
More informationCSC 1600 Memory Layout for Unix Processes"
CSC 16 Memory Layout for Unix Processes" 1 Lecture Goals" Behind the scenes of running a program" Code, executable, and process" Memory layout for UNIX processes, and relationship to C" : code and constant
More informationObject-Oriented Programming, Iouliia Skliarova
Object-Oriented Programming, Iouliia Skliarova CBook a = CBook("C++", 2014); CBook b = CBook("Physics", 1960); a.display(); b.display(); void CBook::Display() cout
More informationCS 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 informationMemory, Arrays, and Parameters
lecture02: Largely based on slides by Cinda Heeren CS 225 UIUC 11th June, 2013 Announcements hw0 due tomorrow night (6/12) Linux tutorial tonight in the lab mp1 released tomorrow night (due Monday, 6/17)
More informationPointers 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 informationArrays in Functions!
Arrays in Functions! 1E3! Topic 12! 12 Arrays in Functions 1 Objectives! n This topic should allow students to! n Pass array elements to functions! n Pass whole arrays to functions! n Write functions that
More informationDynamic Memory Allocation
Dynamic Memory Allocation Lecture 15 COP 3014 Fall 2017 November 6, 2017 Allocating memory There are two ways that memory gets allocated for data storage: 1. Compile Time (or static) Allocation Memory
More information3/22/2016. Pointer Basics. What is a pointer? C Language III. CMSC 313 Sections 01, 02. pointer = memory address + type
Pointer Basics What is a pointer? pointer = memory address + type C Language III CMSC 313 Sections 01, 02 A pointer can contain the memory address of any variable type A primitive (int, char, float) An
More informationThe Stack, Free Store, and Global Namespace
Pointers This tutorial is my attempt at clarifying pointers for anyone still confused about them. Pointers are notoriously hard to grasp, so I thought I'd take a shot at explaining them. The more information
More informationCMSC 341 Lecture 10 Binary Search Trees
CMSC 341 Lecture 10 Binary Search Trees John Park Based on slides from previous iterations of this course Review: Tree Traversals 2 Traversal Preorder, Inorder, Postorder H X M A K B E N Y L G W UMBC CMSC
More information10/20/2015. Midterm Topic Review. Pointer Basics. C Language III. CMSC 313 Sections 01, 02. Adapted from Richard Chang, CMSC 313 Spring 2013
Midterm Topic Review Pointer Basics C Language III CMSC 313 Sections 01, 02 1 What is a pointer? Why Pointers? Pointer Caution pointer = memory address + type A pointer can contain the memory address of
More information04-17 Discussion Notes
04-17 Discussion Notes PIC 10B Spring 2018 1 RAII RAII is an acronym for the idiom Resource Acquisition is Initialization. What is meant by resource acquisition is initialization is that a resource should
More informationChapter 1 Getting Started
Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different
More informationLearning Recursion. Recursion [ Why is it important?] ~7 easy marks in Exam Paper. Step 1. Understand Code. Step 2. Understand Execution
Recursion [ Why is it important?] ~7 easy marks in Exam Paper Seemingly Different Coding Approach In Fact: Strengthen Top-down Thinking Get Mature in - Setting parameters - Function calls - return + work
More information1. a) What #include statement do you put at the top of a program that does uses cin, cout or endl?
Exercises with solutions. 1. a) What #include statement do you put at the top of a program that does uses cin, cout or endl? #include b) What using statement do you always put at the top of
More informationVector 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 informationPointers review. int a = 5; int *ptr = &a; cout << *ptr;
Pointers review Let a variable aa be defined as int *aa;, what is stored in aa? Let a variable aa be defined as int ** aa; what is stored in aa? Why we should NOT return a pointer to a local variable?
More informationPointers. A pointer is simply a reference to a variable/object. Compilers automatically generate code to store/retrieve variables from memory
Pointers A pointer is simply a reference to a variable/object Compilers automatically generate code to store/retrieve variables from memory It is automatically generating internal pointers We don t have
More informationStructured Data. CIS 15 : Spring 2007
Structured Data CIS 15 : Spring 2007 Functionalia HW4 Part A due this SUNDAY April 1st: 11:59pm Reminder: I do NOT accept LATE HOMEWORK. Today: Dynamic Memory Allocation Allocating Arrays Returning Pointers
More informationCS 103 Unit 11. Linked Lists. Mark Redekopp
1 CS 103 Unit 11 Linked Lists Mark Redekopp 2 NULL Pointer Just like there was a null character in ASCII = '\0' whose ue was 0 There is a NULL pointer whose ue is 0 NULL is "keyword" you can use in C/C++
More informationC++ Arrays. C++ Spring 2000 Arrays 1
C++ Arrays C++ Spring 2000 Arrays 1 C++ Arrays An array is a consecutive group of memory locations. Each group is called an element of the array. The contents of each element are of the same type. Could
More informationCSCI-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 informationFundamentals of Programming
Fundamentals of Programming Dynamic memory Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa March 9, 2012 G. Lipari (Scuola Superiore Sant Anna) Dynamic memory March 9, 2012
More informationIntro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
More informationREFERENCES, POINTERS AND STRUCTS
REFERENCES, POINTERS AND STRUCTS Problem Solving with Computers-I https://ucsb-cs16-sp17.github.io/ Pointer assignment 2 int *p1, *p2, x; p1 = &x; p2 = p1; Q: Which of the following pointer diagrams best
More information