Top Banner
UNIVERSITY OF NIVERSITY OF MASSACHUSETTS ASSACHUSETTS AMHERST MHERST Department of Computer Science Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts Amherst
32

Computer Systems Principles C/C++

Jan 05, 2016

Download

Documents

cahil

Computer Systems Principles C/C++. Emery Berger and Mark Corner University of Massachusetts Amherst. Administrivia. Using C/C++: Windows http://www.microsoft.com/express/Downloads/ Mac http://developer.apple.com/technologies/xcode.html Edlab: elnux[1, 2, 3, 7].cs.umass.edu - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science

Computer Systems PrinciplesC/C++

Emery Berger and Mark CornerUniversity of Massachusetts

Amherst

Page 2: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science

Administrivia Using C/C++:

– Windows• http://www.microsoft.com/express/Downloads/

– Mac• http://developer.apple.com/technologies/xcode.

html

Edlab: elnux[1, 2, 3, 7].cs.umass.edu– Passwords = ELxxxaaa

• Xxx = last 3 digits of ID, aaa = first 3 chars of username

2

Page 3: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science

Why C/C++? Your friends are doing it.

www.tiobe.com

Page 4: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 4

Why C? Low-level

– Direct access to memory– WYSIWYG (more or less)– Effectively no runtime system

• No garbage collector• No other threads• No “read” or “write barriers”

Efficient– Space & time– C: effectively portable assembly code

Page 5: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 5

OK, Why C++? C++: extends C

– Upwardly-compatible Adds significant software engineering

benefits– Classes– Encapsulation (private)– Templates (“generics”)– Other modularity advantages– Inlining instead of macros

Page 6: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 6

Outline, part I Basics – compiling & running Intrinsic types, conditionals, etc. Pointers + Reference variables

– Assignment– Objects– &, *, ->

Stack vs. heap

Page 7: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 7

Outline, part II Functions

– Parameter passing Structs & classes Overloading & inheritance Stack vs. heap I/O, command-line STL

Page 8: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 8

Basics Main & compilation

Page 9: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 9

Intrinsic Types Essentially identical

Page 10: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 10

Conditionals Mostly the same

– C/C++: nonzero int same as true

Page 11: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 11

File I/O Simple stream-based I/O

– cout << “foo” print foo– cin >> x read x from the console

Page 12: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 12

Command-line Arguments Again, similar to Java

Page 13: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 13

Key Differences Differences between C/C++ and Java

– Assignment– Pointers– Parameter passing– Heap & Stack– Arrays

Page 14: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 14

Assignment Java assignment: makes reference C++ assignment: makes copy

Page 15: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 15

Pointers & Friends “Pointers are like jumps, leading wildly

from one part of the data structure to another. Their introduction into high-level languages has been a step backwards from which we may never recover.”– C.A.R. Hoare

Page 16: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 16

Pointers & Friends Concept not in Java: address manipulation

Page 17: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 17

Functions & Parameter Passing C/C++ – all parameters copied by default

Page 18: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 18

Parameter Passing To change input, pass pointer

– or call by reference

Page 19: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 19

Pass by Reference Syntactic sugar:

foo (int &i) = pass by reference– Secretly does pointer stuff for you

Page 20: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 20

Stack & Heap In C/C++ as in Java, objects can live on:

– Stack = region of memory for temporaries• Stack pointer pushed on function entry• Popped on function exit

– Heap = distinct region of memory for persistent objects

• C/C++ – explicitly managed

Pointers introduce problems!

Page 21: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 21

The Stack Stack data: new every time

Page 22: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 22

Big Stack Mistake Never return pointers to the stack!

Page 23: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 23

The Heap Allocate persistent data on heap with new

Page 24: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 24

Explicit Memory Management Java heap – garbage collected C/C++ – explicit memory management

– You must delete items (or memory leak)

– Delete them too soon (still in use) – crash• “Dangling pointer” error

– Delete something twice – crash• “Double-free” error

Page 25: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 25

Classes & Objects No “top” object (as in Java Object)

– Also: C++ has no interfaces but has multiple inheritance – stay far away

Page 26: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 26

Struct Member Access struct = class with everything public

– Use these sparingly

Page 27: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 27

Class Declaration Pretty similar

Page 28: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 28

Arrays Numerous differences

– Arrays do not have to be allocated with new– Array bounds not checked– Item = pointer to start of array– Arrays just syntactic sugar

for pointer arithmetic! (scary! avoid!)• v = 12; *(Item + v) = 1;• Same as Item[12] = 1;

– Note: sizeof(x) = number of bytes to hold x Multi-dimensional arrays (matrices)

– just arrays of pointers to arrays

Page 29: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 29

Other Features Operator overloading

– New meanings to existing operators• int operator+(MyType& a, MyType& b);

– Controversial, but useful for things like complex math, matrix operations

• int& operator()(int x, int y); Templates

– A.k.a. generics in Java– template <class X> void foo (X arg);

Page 30: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science

Standard Template Library(STL) Implements useful data structures

Page 31: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 31

End of Lecture

Page 32: Computer Systems Principles C/C++

UUNIVERSITY OF NIVERSITY OF MMASSACHUSETTS ASSACHUSETTS AAMHERST • MHERST • Department of Computer Science Department of Computer Science 32

Classes & Objects No “top” object (as in Java Object)

– Also: C++ has no interfaces but has multiple inheritance – stay far away

Key difference for you – not all methods dynamically-dispatched– Methods associated with declared type

rather than dynamic type unless labeled virtual