inst eecs berkeley edu cs61c CS61C Machine Structures Lecture 3 Introduction to the C Programming Language 2004 09 03 Lecturer PSOE Dan Garcia www cs berkeley edu ddgarcia Pride of Cal Natalie Coughlin returned after winning 5 Olympic medals no US woman ever won more 15 hours from her degree www berkeley edu CS 61C L03 Introduction to C pt 1 1 Garcia Fall 2004 UCB Review 1 2 s Complement line N 5 00000 00001 11111 11110 00010 0 1 1 11101 2 2 3 11100 4 2 N 1 nonnegatives 2 N 1 negatives one zero how many positives 15 16 15 10001 10000 01111 CS 61C L03 Introduction to C pt 1 2 Garcia Fall 2004 UCB Review 2 Overview We represent things in computers as particular bit patterns N bits 2N Decimal for human calculations binary for computers hex to write binary more easily 1 s complement mostly abandoned 00000 00001 01111 10000 11110 11111 2 s complement universal in computing cannot avoid so learn 00000 00001 01111 10000 11110 11111 Overflow numbers computers finite errors CS 61C L03 Introduction to C pt 1 3 Garcia Fall 2004 UCB Disclaimer Important You will not learn how to fully code in C in these lectures You ll still need your C reference for this course K R is a must have reference Check online for more sources JAVA in a Nutshell O Reilly Chapter 2 How Java Differs from C CS 61C L03 Introduction to C pt 1 4 Garcia Fall 2004 UCB Compilation Overview C compilers take C and convert it into an architecture specific machine code string of 1s and 0s Unlike Java which converts to architecture independent bytecode Unlike most Scheme environments which interpret the code Generally a 2 part process of compiling c files to o files then linking the o files into executables CS 61C L03 Introduction to C pt 1 5 Garcia Fall 2004 UCB Compilation Advantages Great run time performance generally much faster than Scheme or Java for comparable code because it optimizes for a given architecture OK compilation time enhancements in compilation procedure Makefiles allow only modified files to be recompiled CS 61C L03 Introduction to C pt 1 6 Garcia Fall 2004 UCB Compilation Disadvantages All compiled files including the executable are architecture specific depending on both the CPU type and the operating system Executable must be rebuilt on each new system Called porting your code to a new architecture The change compile run repeat iteration cycle is slow CS 61C L03 Introduction to C pt 1 7 Garcia Fall 2004 UCB C vs Java Overview 1 2 Java C Object oriented OOP No built in object abstraction Data separate from methods Methods Class libraries of data structures Functions C libraries are lower level Automatic memory management CS 61C L03 Introduction to C pt 1 8 Manual memory management Pointers Garcia Fall 2004 UCB C vs Java Overview 2 2 Java C High memory overhead from class libraries Low memory overhead Relatively Slow Arrays initialize to zero Syntax Relatively Fast Arrays initialize to garbage comment comment System out print CS 61C L03 Introduction to C pt 1 9 Syntax comment printf Garcia Fall 2004 UCB C Syntax Variable Declarations Very similar to Java but with a few minor but important differences All variable declarations must go before they are used at the beginning of the block A variable may be initialized in its declaration Examples of declarations correct int a 0 b 10 incorrect for int i 0 i 10 i CS 61C L03 Introduction to C pt 1 10 Garcia Fall 2004 UCB C Syntax True or False What evaluates to FALSE in C 0 integer NULL pointer more on this later no such thing as a Boolean What evaluates to TRUE in C everything else same idea as in scheme only f is false everything else is true CS 61C L03 Introduction to C pt 1 11 Garcia Fall 2004 UCB C syntax flow control Within a function remarkably close to Java constructs in methods shows its legacy in terms of flow control if else switch while and for do while CS 61C L03 Introduction to C pt 1 12 Garcia Fall 2004 UCB C Syntax main To get the main function to accept arguments use this int main int argc char argv What does this mean argc will contain the number of strings on the command line the executable counts as one plus one for each argument Example unix sort myFile argv is a pointer to an array containing the arguments as strings more on pointers later CS 61C L03 Introduction to C pt 1 13 Garcia Fall 2004 UCB Administrivia You have a question Do not email Dan expect response Hundreds of emails in inbox Email doesn t scale to classes with 200 students Tips on getting an answer to your question Ask a classmate Ask Dan after or before lecture The newsgroup ucb class cs61c Read it Has your Q been answered already If not ask it and check back Ask TA in section lab or OH Ask Dan in OH Ask Dan in lecture if relevant to lecture Send your TA email Send one of the two Head TAs email Send Dan email CS 61C L03 Introduction to C pt 1 15 Garcia Fall 2004 UCB Administrivia Near term Monday is a holiday have a good one Upcoming lectures C pointers and arrays in detail HW HW0 due in discussion next week HW1 due this Wed 23 59 PST HW2 due next Wed 23 59 PST Reading K R Chapters 1 5 lots get started now First quiz will be next Wed CS 61C L03 Introduction to C pt 1 16 Garcia Fall 2004 UCB Address vs Value Consider memory to be a single huge array Each cell of the array has an address associated with it Each cell also stores some value Don t confuse the address referring to a memory location with the value 101 102 103 104 stored in105that location 23 CS 61C L03 Introduction to C pt 1 18 42 Garcia Fall 2004 UCB Pointers An address refers to a particular memory location In other words it points to a memory location Pointer A variable that contains the address of a variable Location address 101 102 103 104 105 23 x 42 y 104 p name CS 61C L03 Introduction to C pt 1 19 Garcia Fall 2004 UCB Pointers How to create a pointer operator get address of a variable p x x 3 p x 3 p x p x 3 int p x How get a value pointed to Note the gets used 2 different ways in this example In the declaration to indicate that p is going to be a pointer and in the printf to get the value pointed to by p dereference operator get value pointed to printf p points to d n p CS 61C L03 Introduction to C pt 1 20 Garcia Fall 2004 UCB Pointers How to change a variable pointed to Use dereference operator on left of p 5 p x 3 p x 5 CS 61C L03 …
View Full Document
Unlocking...