Presentation is loading. Please wait.

Presentation is loading. Please wait.

U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts.

Similar presentations


Presentation on theme: "U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts."— Presentation transcript:

1 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts Amherst

2 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Administrivia  Using C/C++: –Windows http://www.microsoft.com/express/Downloads/ –Mac http://developer.apple.com/technologies/xcode. htmlhttp://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

3 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Why C/C++?  Your friends are doing it. www.tiobe.com

4 U NIVERSITY OF M ASSACHUSETTS A MHERST 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

5 U NIVERSITY OF M ASSACHUSETTS A MHERST 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

6 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 6 Outline, part I  Basics – compiling & running  Intrinsic types, conditionals, etc.  Pointers + Reference variables –Assignment –Objects –&, *, ->  Stack vs. heap

7 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 7 Outline, part II  Functions –Parameter passing  Structs & classes  Overloading & inheritance  Stack vs. heap  I/O, command-line  STL

8 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 8 Basics  Main & compilation

9 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 9 Intrinsic Types  Essentially identical

10 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 10 Conditionals  Mostly the same –C/C++: nonzero int same as true

11 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 11 File I/O  Simple stream-based I/O –cout << “foo”print foo –cin >> x read x from the console

12 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 12 Command-line Arguments  Again, similar to Java

13 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 13 Key Differences  Differences between C/C++ and Java –Assignment –Pointers –Parameter passing –Heap & Stack –Arrays

14 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 14 Assignment  Java assignment: makes reference  C++ assignment: makes copy

15 U NIVERSITY OF M ASSACHUSETTS A MHERST 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

16 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 16 Pointers & Friends  Concept not in Java: address manipulation

17 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 17 Functions & Parameter Passing  C/C++ – all parameters copied by default

18 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 18 Parameter Passing  To change input, pass pointer –or call by reference

19 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 19 Pass by Reference  Syntactic sugar: foo (int &i) = pass by reference –Secretly does pointer stuff for you

20 U NIVERSITY OF M ASSACHUSETTS A MHERST 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!

21 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 21 The Stack  Stack data: new every time

22 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 22 Big Stack Mistake  Never return pointers to the stack!

23 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 23 The Heap  Allocate persistent data on heap with new

24 U NIVERSITY OF M ASSACHUSETTS A MHERST 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

25 U NIVERSITY OF M ASSACHUSETTS A MHERST 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

26 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 26 Struct Member Access  struct = class with everything public –Use these sparingly

27 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 27 Class Declaration  Pretty similar

28 U NIVERSITY OF M ASSACHUSETTS A MHERST 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

29 U NIVERSITY OF M ASSACHUSETTS A MHERST 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 void foo (X arg);

30 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Standard Template Library(STL)  Implements useful data structures

31 U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 31 End of Lecture

32 U NIVERSITY OF M ASSACHUSETTS A MHERST 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


Download ppt "U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts."

Similar presentations


Ads by Google