IT 252 Computer Organization and Architecture Introduction to the C Programming Language
|
|
- Lisa Sims
- 5 years ago
- Views:
Transcription
1 IT 252 Computer Organization and Architecture Introduction to the C Programming Language Chia-Chi Teng
2 Administrivia : You have a question? Tips on getting an answer to your question: Ask a classmate Catch me after or before lecture Ask TA in lab or IM Ask me in lecture (if relevant to lecture) Send your TA Send me Office hours or by appointment
3 Administrivia Upcoming lectures HW x86 assembly HW1 due tonight midnight Both paper and electronic, check Learning Suite HW2 due next Thursday Reading Check class web site (lots, get started now!) Textbook practice problems!!! They help. Lab 1 due Friday midnight submit.pl Lab 2 write-up due Friday next week Submit on Learning Suite Quiz 1: address and pointers in x86 assembly Help sessions
4 IT in the Real World Infected Frames! Malware has been found in photo frames sold by Best Buy. This is not the first time this has happened in personal electronics (ipods, drives, MP3 players). Be careful!
5 What is this?! ~2 min Attention over time! t
6 Number review... We represent things in computers as particular bit patterns: N bits 2 N Decimal for human calculations, binary for computers, hex to write binary more easily 1 s complement - mostly abandoned s complement universal in computing: cannot avoid, so learn Overflow: numbers ; computers finite,errors!
7 Basic Skills Linux Shell Text Editor: gedit, vi, emacs, Basic Shell Scripts Compiler: gcc, Visual C, Debugger: gdb, DDD, Eclipse, Useful tool: codepad.org
8 Background in C? Raise hands please Took CS 142 in C++ Used C in CS 124? Written > 500 lines C (or C++) source?
9 Introduction to C
10 Has there been an update to ANSI C? Yes! It s called the C99 or C9x std You need gcc -std=c99 to compile References Highlights Declarations anywhere, like Java Java-like // comments (to end of line) Variable-length non-global arrays <inttypes.h>: explicit integer types <stdbool.h> for boolean logic def s restrict keyword for optimizations
11 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 the basic reference Check online for more sources JAVA in a Nutshell, O Reilly. Chapter 2, How Java Differs from C
12 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 the basic reference Check online for more sources JAVA in a Nutshell, O Reilly. Chapter 2, How Java Differs from C Brian Harvey s course notes On class website
13 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 JavaScript environments which interpret the code. These differ mainly in when your program is converted to machine instructions. For C, generally a 2 part process of compiling.c files to.o files, then linking the.o files into executables
14 Compilation : Advantages Great run-time performance: generally much faster than Java or JavaScript for comparable code (because it optimizes for a given architecture) OK compilation time: enhancements in compilation procedure (Makefile) allow only modified files to be recompiled
15 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
16 Key C Topics Pass-by value/reference Pass-by ptr is efficient (esp large arrays)(slide 51, 52) Bugs (slide 36) Pointers: Contains an address Array variable v. similar to ptrs (char=array, \0) Arrays Size w. constant once (slide 32) Bounds unchecked-vulnerable (slide 33, 53) Ptrs know size to increment Ptr arith (slide 40, 41) Variable scoping
17 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). Here argc is 2: unix% sort myfile argv is a pointer to an array containing the arguments as strings (more on pointers later).
18 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; if not, it holds garbage! Examples of declarations: correct: { int a = 0, b = 10;... Incorrect:* for (int i = 0; i < 10; i++) *C99 overcomes these limitations
19 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. Do you think they use signed or unsigned numbers? Negative address?! Don t confuse the address referring to a memory location with the value stored in that location
20 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) name x y p
21 Pointers How to create a pointer: & operator: get address of a variable int *p, x; p? x? x = 23; p? x 23 p =&x; p x 23 How get a value pointed to? * dereference operator : get value pointed to printf( p points to %d\n,*p); 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. printf( address is %X or %X,p,&x);
22 Pointers How to change a variable pointed to? Use dereference * operator on left of = p x 23 *p = 5; p x 5
23 Pointers and Parameter Passing (1/4) Java and C pass parameters by value procedure/function/method gets a copy of the parameter, so changing the copy cannot change the original void addone (int x) { x = x + 1; } int y = 3; addone(y); // what is y? y is still = 3
24 Pointers and Parameter Passing (2/4) How to get a function to change a value? void addone (int *p) { *p = *p + 1; } int y = 3; addone(&y); // what is y? y is now = 4
25 Pointers and Parameter Passing (3/4) But what if what you want changed is a pointer? What gets printed? void IncrementPtr(int *p) { p = p + 1; } int A[3] = {50, 60, 70}; int *q = A; IncrementPtr( q); printf( *q = %d\n, *q); A q *q =
26 Pointers and Parameter Passing (4/4) Solution! Pass a pointer to a pointer, declared as **h Now what gets printed? void IncrementPtr(int **h) { *h = *h + 1; } int A[3] = {50, 60, 70}; int *q = A; IncrementPtr(&q); printf( *q = %d\n, *q); A q q *q =
27 Pointers Pointers are used to point to any data type (int, char, a struct, etc.). Normally a pointer can only point to one type (int, char, a struct, etc.). void * is a type that can point to anything (generic pointer) Use sparingly to help avoid program bugs and security issues and a lot of other bad things!
28 C Pointer Dangers Declaring a pointer just allocates space to hold the pointer it does not allocate something to be pointed to! Local variables in C are not initialized, they may contain anything. What does the following code do? void f() { int *ptr; *ptr = 5; }
29 Arrays (1/5) Declaration: int ar[2]; declares a 2-element integer array. An array is really just a block of memory. int ar[] = {795, 635}; declares and fills a 2-elt integer array. Accessing elements: ar[num] returns the num th element. What is ar[1]?
30 Arrays (2/5) Arrays are (almost) identical to pointers char *string and char string[] are nearly identical declarations They differ in very subtle ways: incrementing, declaration of filled arrays Key Concept: An array variable is a pointer to the first element.
31 Arrays (3/5) Consequences: ar is an array variable but looks like a pointer in many respects (though not all) ar[0] is the same as *ar ar[2] is the same as *(ar+2) We can use pointer arithmetic to access arrays more conveniently. Declared arrays are only allocated while the scope is valid char *foo() { char string[32];...; return string; } Is this correct? Why?
32 Arrays (4/5) Array size n; want to access from 0 to n-1, so you should use counter AND utilize a constant for declaration & incr Bad int i, ar[10]; for(i = 0; i < 10; i++){... } Good #define ARRAY_SIZE 10 int i, a[array_size]; for(i = 0; i < ARRAY_SIZE; i++){... } Why? SINGLE SOURCE OF TRUTH You re utilizing indirection and avoiding maintaining two copies of the number 10
33 Arrays (5/5) Pitfall: Unlike Java, an array in C does not know its own length, & bounds not checked! Consequence: We can accidentally access off the end of an array. Consequence: We must pass the array and its size to a procedure which is going to traverse it. Buffer overflow (internet worm) Segmentation faults and bus errors: These are difficult to find; be careful! (You ll learn how to debug these later on )
34 Pointer Arithmetic (1/2) Since a pointer is just a memory address, we can add to it to traverse an array. p+1 returns a ptr to the next array elemnt. *p++ vs (*p)++? x = *p++ x = *p ; p = p + 1; x = (*p)++ x = *p ; *p = *p + 1; What if we have an array of large structs (objects)? C takes care of it: In reality, p+1 doesn t add 1 to the memory address, it adds the size of the array element.
35 Pointer Arithmetic (2/2) C knows the size of the thing a pointer points to every addition or subtraction moves that many bytes. 1 byte for a char, 4 bytes for an int, etc. int* p;... p = 100; p++; // what is p now? So array[n]and *(array + n) are equivalent:
36 Pointers in C Why use pointers? If we want to pass a huge struct or array, it s easier to pass a pointer than the whole thing. In general, pointers allow cleaner, faster, more compact code. So what are the drawbacks? Pointers are probably the single largest source of bugs in C/C++ software, so be careful anytime you deal with them. Dangling reference (premature free) Memory leaks (tardy free)
37 C Strings A string in C is just an array of characters. char string[] = "abc"; How do you tell how long a string is? Last character is followed by a 0 byte (null terminator) int strlen(char s[]) { int n = 0; while (s[n]!= 0) n++; return n; }
38 Peer Instruction Question void main(); { int *p, x=5, y; // init y = *(p = &x) + 10; int z; flip-sign(p); printf("x=%d,y=%d,*p=%d\n",x,y,p); } flip-sign(int *n){*n = -(*n)} How many syntax/logic errors in this C99 code? #Errors
39 Peer Instruction Answer void main(); { int *p, x=5, y; // init y = *(p = &x) + 10; int z; flip-sign(p); printf("x=%d,y=%d,*p=%d\n",x,y,*p); } flip-sign(int *n){*n = -(*n);} How many syntax/logic errors? I get 5. (signed printing of pointer is logical error) #Errors
40 Pointer Arithmetic Peer Instruction Q How many of the following are invalid (logically)? I. pointer + integer II. integer + pointer III. pointer + pointer IV. pointer integer V. integer pointer VI. pointer pointer VII. compare pointer to pointer VIII. compare pointer to none-zero integer IX. compare pointer to 0 X. compare pointer to NULL #invalid
41 Pointer Arithmetic Peer Instruction Ans How many of the following are invalid? I. pointer + integer II. integer + pointer III. pointer + pointer IV. pointer integer V. integer pointer VI. pointer pointer VII. compare pointer to pointer VIII. compare pointer to integer IX. compare pointer to 0 X. compare pointer to NULL ptr ptr ptr + ptr ptr ptr ptr - ptr ptr1 == ptr2 ptr == 1 ptr == NULL ptr == NULL #invalid
42 Peer Instruction p int main(void){ int A[2] = {5,10}; int *p = A; } 5 10 A[0] A[1] printf( %u %d %d %d\n, p, *p, A[0], A[1]); p = p + 1; printf( %u %d %d %d\n, p, *p, A[0], A[1]); *p = *p + 1; printf( %u %d %d %d\n, p, *p, A[0], A[1]); If the first printf outputs , what will the other two printf output? 1: then : then : then : then : One of the two printfs causes an ERROR 6: I surrender!
43 Peer Instruction p int main(void){ int A[2] = {5,10}; int *p = A; } 5 10 A[0] A[1] printf( %u %d %d %d\n, p, *p, A[0], A[1]); p = p + 1; printf( %u %d %d %d\n, p, *p, A[0], A[1]); *p = *p + 1; printf( %u %d %d %d\n, p, *p, A[0], A[1]); If the first printf outputs , what will the other two printf output? 1: then : then : then : then : One of the two printfs causes an ERROR 6: I surrender!
44 Lifetime & Scope Every variable has scope Where can the variable be used? At run-time, every variable needs space When is the space allocated and deallocated? Global vs local variable
45 Variable scope (1/2) Global variables allocated before main, deallocated after main. Scope is entire program Usually bad style, similar to public static Java fields. Static global variables like global var but scope is just that file. Similar to private static Java fields. Related: static functions cannot be called from another file.
46 Variable scope (2/2) Static local variables like global variables, but scope is just that function. Local variables allocated when reached & deallocated after the block, scope is that block. So with recursion, multiple instances/spaces for same variable. One per function call (stack frame.) Like local variables in Java.
47 Code Block int f(int x) { int i = 0; if (x) { int i = 10 * x; // does this compile? } printf( %d %d, i, x); // what is i? return i; }
48 A typical file layout No rules on this order, but good conventional style // includes for functions, types defined elsewhere (just prototypes) #include <stdio.h> #include... // global variables (usually avoid them) int some_global; static int this_file_arr[7] = { 0, 2, 4, 5, 9, -4, 6 }; // function prototypes for forward-references (to get around // uses-follow-definition rule) void some_later_fun(char, int); // argument names optional // functions void f() {... } void some_later_fun(char x, int y) {...} int main(int argc, char**argv) {...}
49 Use Follows Definition No forward references A function must be defined or declared before it is used. Linker error if something is declared and used but not defined.
50 Misc Silly almost-obsolete ANSI C syntax restriction (not in Java/C99/C++): declarations only at the beginning of a block. Just create a block by adding { } Or use std=c99 gcc compiler option (Local or global) variables holding arrays must have a constant size So the compiler knows how much space to give So for arrays whose size depends on run-time information, dynamically allocate them in heap and point to them (more on this later)
51 Function Arguments Storage and scope of arguments is like for local variables. Initialized by caller ( copy the value) Modifying an argument has no affect on the caller. Use pointer if needed. void f() { int g(int x) { } int i=10; x=x+1; int j=g(i); return x; printf( %d %d, i,j); }
52 Function Arguments Storage and scope of arguments is like for local variables. Initialized by caller ( copy the value) Modifying an argument has no affect on the caller. Use pointer if needed. void f() { int g(int* x) { } int i=10; *x = *x + 1; int j=g(&i); printf( %d %d, i,j); } return *x;
53 Dangling Pointers int* f(int x) { // Where are the problems? int* p; if (x) { int y = 3; p = &y; // OK } y = 4; // this does not compile *p = 7; // p is invalid, could crash but probably not return p; // returning a bad pointer, but no crash yet } void g() { int* p = f(7); *p = 123; // hopefully you crash, but maybe not }
54 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!) *Boolean types provided by C99 s stdbool.h
55 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
56 And in conclusion All declarations go at the beginning of each function except if you use C99. Only 0 and NULL evaluate to FALSE. All data is in memory. Each memory location has an address to use to refer to it and a value stored in it. A pointer is a C version of the address. * follows a pointer to its value & gets the address of a value
57 Reference slides You ARE responsible for the material on these slides (they re just taken from the reading anyway) ; we ve moved them to the end and off-stage to give more breathing room to lecture!
58 C vs. Java Overview (1/2) Java Object-oriented (OOP) Methods Class libraries of data structures Automatic memory management C No built-in object abstraction. Data separate from methods. Functions C libraries are lower-level Manual memory management Pointers
59 C vs. Java Overview (2/2) Java High memory overhead from class libraries Relatively Slow Arrays initialize to zero Syntax: /* comment */ // comment System.out.print C Low memory overhead Relatively Fast Arrays initialize to garbage Syntax: * /* comment */ // comment printf * You need newer C compilers to allow Java style comments, or just use C99
60 Pointers & Allocation (1/2) After declaring a pointer: int *ptr; ptr doesn t actually point to anything yet (it actually points somewhere - but don t know where!). We can either: make it point to something that already exists, or allocate room in memory for something new that it will point to (next time)
61 Pointers & Allocation (2/2) Pointing to something that already exists: int *ptr, var1, var2; var1 = 5; ptr = &var1; var2 = *ptr; var1 and var2 have room implicitly allocated for them. ptr? var1? 5 var2? 5
62 Pointer Arithmetic So what s valid pointer arithmetic? Add an integer to a pointer. Subtract 2 pointers (in the same array). Compare pointers (<, <=, ==,!=, >, >=) Compare pointer to NULL (indicates that the pointer points to nothing). Everything else is illegal since it makes no sense: adding two pointers multiplying pointers subtract pointer from integer
63 Pointer Arithmetic to Copy memory We can use pointer arithmetic to walk through memory: void copy(int *from, int *to, int n) { int i; for (i=0; i<n; i++) { *to++ = *from++; } } Note we had to pass size (n) to copy
64 Arrays vs. Pointers An array name is a read-only pointer to the 0 th element of the array. An array parameter can be declared as an array or a pointer; an array argument can be passed as a pointer. int strlen(char s[]) { int n = 0; while (s[n]!= 0) n++; return n; } Could be written: while (s[n]) int strlen(char *s) { int n = 0; while (s[n]!= 0) n++; return n; }
65 Pointer Arithmetic Summary x = *(p+1)? x = *(p+1) ; x = *p+1? x = (*p) + 1 ; x = (*p)++? x = *p ; *p = *p + 1; x = *p++? (*p++)? *(p)++? *(p++)? x = *p ; p = p + 1; x = *++p? p = p + 1 ; x = *p ; Lesson? Using anything but the standard *p++, (*p)++ causes more problems than it solves!
66 Segmentation Fault vs Bus Error? Bus Error A fatal failure in the execution of a machine language instruction resulting from the processor detecting an anomalous condition on its bus. Such conditions include invalid address alignment (accessing a multi-byte number at an odd address), accessing a physical address that does not correspond to any device, or some other device-specific hardware error. A bus error triggers a processor-level exception which Unix translates into a SIGBUS signal which, if not caught, will terminate the current process. Segmentation Fault An error in which a running Unix program attempts to access memory not allocated to it and terminates with a segmentation violation error and usually a core dump.
67 C Pointer Dangers Unlike Java, C lets you cast a value of any type to any other type without performing any checking. int x = 1000; int *p = x; /* invalid */ int *q = (int *) x; /* valid */ The first pointer declaration is invalid since the types do not match. The second declaration is valid C but is almost certainly wrong Is it ever correct?
68 C Strings Headaches One common mistake is to forget to allocate an extra byte for the null terminator. More generally, C requires the programmer to manage memory manually (unlike Java or C++). When creating a long string by concatenating several smaller strings, the programmer must insure there is enough space to store the full string! What if you don t know ahead of time how big your string will be? Buffer overrun security holes!
69 Common C Error There is a difference between assignment and equality a = b is assignment a == b is an equality test This is one of the most common errors for beginning C programmers! One solution (when comparing with constant) is to put the var on the right! If you happen to use =, it won t compile. if (3 == a) {...
70 C String Standard Functions int strlen(char *string); compute the length of string int strcmp(char *str1, char *str2); return 0 if str1 and str2 are identical (how is this different from str1 == str2?) char *strcpy(char *dst, char *src); copy the contents of string src to the memory at dst. The caller must ensure that dst has enough memory to hold the data to be copied.
HW1 due Monday by 9:30am Assignment online, submission details to come
inst.eecs.berkeley.edu/~cs61c CS61CL : Machine Structures Lecture #2 - C Pointers and Arrays Administrivia Buggy Start Lab schedule, lab machines, HW0 due tomorrow in lab 2009-06-24 HW1 due Monday by 9:30am
More informationAgenda. 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 informationNumber Review. Lecture #3 More C intro, C Strings, Arrays, & Malloc Variables. Clarification about counting down
CS61C L3 C Pointers (1) inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #3 More C intro, C Strings, Arrays, & Malloc Albert Chae Instructor 2008-06-25 Number Review Sign and magnitude
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #3 C Strings, Arrays, & Malloc 2007-06-27 Scott Beamer, Instructor Sun announces new supercomputer: Sun Constellation CS61C L3 C Pointers
More informationMore C Pointer Dangers
CS61C L04 Introduction to C (pt 2) (1) inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Must-see talk Thu 4-5pm @ Sibley by Turing Award winner Fran Allen: The Challenge of Multi-Cores: Think Sequential,
More informationCS61C 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 informationNumber review... Lecture 3 Introduction to the C Programming Language (pt 1) Has there been an update to ANSI C?
CS61C L03 Introduction to C (pt 1) (1) inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to the C Programming Language (pt 1) 2008-01-28 Lecturer SOE Dan Garcia Hello to Dev
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to C (pt 2) 2010-06-23! C help session: Tonight 7:00-9:00pm @ 306 Soda!!!Instructor Paul Pearce! The typical! development
More informationReview! * follows a pointer to its value! & gets the address of a variable! Pearce, Summer 2010 UCB! ! int x = 1000; Pearce, Summer 2010 UCB!
CS61C L03 Introduction to C (pt 2) (1)! inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to C (pt 2) 2010-06-23!!!Instructor Paul Pearce! The typical! development cycle!
More informationCS61C : Machine Structures
Get your clickers ready...! inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to the C Programming Language (pt 1) 2013-01-28! Hello to Nishant Varma watching from India!!!Senior
More informationCS61C : 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 informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to the C Programming Language (pt 1)!!Lecturer SOE Dan Garcia!!!www.cs.berkeley.edu/~ddgarcia CS61C L03 Introduction to C
More informationCS61C Machine Structures. Lecture 3 Introduction to the C Programming Language. 1/23/2006 John Wawrzynek. www-inst.eecs.berkeley.
CS61C Machine Structures Lecture 3 Introduction to the C Programming Language 1/23/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L03 Introduction to C (1) Administrivia
More informationCS61C : Machine Structures
Get your clickers ready...! inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 3 Introduction to the C Programming Language (pt 1)!!Senior Lecturer SOE Dan Garcia!!!www.cs.berkeley.edu/~ddgarcia
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 2 Introduction to the C Programming Language (pt 1) 2010-06-22!!!Instructor Paul Pearce! There is a handout at the front of the room! Please
More informationTwo s Complement Review. Two s Complement Review. Agenda. Agenda 6/21/2011
Two s Complement Review CS 61C: Great Ideas in Computer Architecture (Machine Structures) Introduction to C (Part I) Instructor: Michael Greenbaum http://inst.eecs.berkeley.edu/~cs61c/su11 Suppose we had
More informationECE 15B COMPUTER ORGANIZATION
ECE 15B COMPUTER ORGANIZATION Lecture 13 Strings, Lists & Stacks Announcements HW #3 Due next Friday, May 15 at 5:00 PM in HFH Project #2 Due May 29 at 5:00 PM Project #3 Assigned next Thursday, May 19
More informationCS 61C: Great Ideas in Computer Architecture. C Arrays, Strings, More Pointers
CS 61C: Great Ideas in Computer Architecture C Arrays, Strings, More Pointers Instructor: Justin Hsia 6/20/2012 Summer 2012 Lecture #3 1 Review of Last Lecture C Basics Variables, Functions, Flow Control,
More informationReference slides! C Strings! A string in C is just an array of characters.!!!char string[] = "abc";! How do you tell how long a string is?!
CS61C L04 Introduction to C (pt 2) (1)! Reference slides! C Strings! You ARE responsible for the material on these slides (they re just taken from the reading anyway). These were the slides that generated
More informationProcessor. Lecture #2 Number Rep & Intro to C classic components of all computers Control Datapath Memory Input Output
CS61C L2 Number Representation & Introduction to C (1) insteecsberkeleyedu/~cs61c CS61C : Machine Structures Lecture #2 Number Rep & Intro to C Scott Beamer Instructor 2007-06-26 Review Continued rapid
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 4 Introduction to C (pt 2) C Pointers CS61C L03 Introduction to C (pt 2) (1) 2006-09-06 Lecturer SOE Dan Garcia www.cs.berkeley.edu/~ddgarcia
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 4 Introduction to C (pt 2) 2014-09-08!!!Senior Lecturer SOE Dan Garcia!!!www.cs.berkeley.edu/~ddgarcia! C most popular! TIOBE programming
More informationReference slides! Garcia, Fall 2011 UCB! CS61C L04 Introduction to C (pt 2) (1)!
Reference slides! You ARE responsible for the material on these slides (they re just taken from the reading anyway). These were the slides that generated the fewest questions in years past (i.e., those
More informationReview: C Strings. A string in C is just an array of characters. Lecture #4 C Strings, Arrays, & Malloc
CS61C L4 C Pointers (1) inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #4 C Strings, Arrays, & Malloc Albert Chae Instructor 2008-06-26 Review: C Strings A string in C is just an array
More informationHas there been an update to ANSI C? Lecture #3 C Pointers Yes! It s called the C99 or C9x std
CS61C L3 C Pointers (1) inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #3 C Pointers 2005-09-07 There is one handout today at the front and back of the room! Lecturer PSOE, new dad Dan
More informationAgenda. Address vs. Value Consider memory to be a single huge array. Review. Pointer Syntax. Pointers 9/9/12
Agenda CS 61C: Great Ideas in Computer Architecture Introduc;on to C, Part II Instructors: Krste Asanovic Randy H. Katz hep://inst.eecs.berkeley.edu/~cs61c/f12 Review Pointers Administrivia Arrays Technology
More informationCS 61C: Great Ideas in Computer Architecture C Pointers. Instructors: Vladimir Stojanovic & Nicholas Weaver
CS 61C: Great Ideas in Computer Architecture C Pointers Instructors: Vladimir Stojanovic & Nicholas Weaver http://inst.eecs.berkeley.edu/~cs61c/sp16 1 Agenda Pointers Arrays in C 2 Address vs. Value Consider
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #2 Number Rep & Intro to C 2005-08-31 There is one handout today at the front and back of the room! Lecturer PSOE, new dad Dan Garcia www.cs.berkeley.edu/~ddgarcia
More informationProcessor. Lecture #2 Number Rep & Intro to C classic components of all computers Control Datapath Memory Input Output }
CS61C L2 Number Representation & Introduction to C (1) insteecsberkeleyedu/~cs61c CS61C : Machine Structures Lecture #2 Number Rep & Intro to C 2005-08-31 There is one handout today at the front and back
More informationTopics Introduction to Microprocessors
Topics 22440 Introduction to Microprocessors C-Language Review (I) Important: : You will not learn how to code in C in this one lecture! You ll still need some sort of C reference. C Syntax Important Tidits
More informationCS 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 informationLecture 4: Outline. Arrays. I. Pointers II. III. Pointer arithmetic IV. Strings
Lecture 4: Outline I. Pointers A. Accessing data objects using pointers B. Type casting with pointers C. Difference with Java references D. Pointer pitfalls E. Use case II. Arrays A. Representation in
More informationInstructor: Randy H. Katz hbp://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #4. Agenda
CS 61C: Great Ideas in Computer Architecture Introduc)on to C, Part II Instructor: Randy H. Katz hbp://inst.eecs.berkeley.edu/~cs61c/fa13 9/10/13 Fall 2013 - - Lecture #4 1 Agenda Pointers and Arrays Administrivia
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 5 C Memory Management Lecturer PSOE Dan Garcia www.cs.berkeley.edu/~ddgarcia CS 61C L04 C Structures, Memory Management (1) 2004-09-10 Barry
More informationCS61C : Machine Structures
inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 5 C Memory Management Lecturer PSOE Dan Garcia www.cs.berkeley.edu/~ddgarcia CS61C L05 C Structures, Memory Management (1) 2005-01-28 The
More informationCS61C Machine Structures. Lecture 5 C Structs & Memory Mangement. 1/27/2006 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/
CS61C Machine Structures Lecture 5 C Structs & Memory Mangement 1/27/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L05 C Structs (1) C String Standard Functions
More informationHow about them A s!! Go Oaktown!! CS61C - Machine Structures. Lecture 4 C Structures Memory Management Dan Garcia.
How about them A s!! Go Oaktown!! CS61C - Machine Structures Lecture 4 C Structures Memory Management 2002-09-05 Dan Garcia (www.cs.berkeley.edu/~ddgarcia) Dave Patterson (www.cs.berkeley.edu/~patterson)
More informationC Arrays, Strings, More Pointers Instructor: Steven Ho
C Arrays, Strings, More Pointers Instructor: Steven Ho Review of Last Lecture C Basics Variables, Functions, Flow Control, Types, and Structs Only 0 and NULL evaluate to FALSE Pointers hold addresses Address
More informationCS61C Machine Structures. Lecture 4 C Structs & Memory Management. 9/5/2007 John Wawrzynek. www-inst.eecs.berkeley.edu/~cs61c/
CS61C Machine Structures Lecture 4 C Structs & Memory Management 9/5/2007 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L04 C Structs (1) C String Standard Functions
More informationLecture 2: C Programm
0 3 E CS 1 Lecture 2: C Programm ing C Programming Procedural thought process No built in object abstractions data separate from methods/functions Low memory overhead compared to Java No overhead of classes
More informationIntro to C: Pointers and Arrays
Lecture 4 Computer Science 61C Spring 2017 January 25th, 2017 Intro to C: Pointers and Arrays 1 Administrivia Teaching Assistants: Let s try that again. Lectures are recorded. Waitlist/Concurrent Enrollment
More informationArrays and Memory Management
Arrays and Memory Management 1 Pointing to Different Size Objects Modern machines are byte-addressable Hardware s memory composed of 8-bit storage cells, each has a unique address A C pointer is just abstracted
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 informationCS 61c: Great Ideas in Computer Architecture
Introduction to C, Pointers June 24, 2014 Review of Last Lecture Six Great Ideas in Computer Architecture Number Representation Bits can represent anything! n bits can represent up to 2 n things Unsigned,
More informationCS 61C: Great Ideas in Computer Architecture Introduc)on to C, Part II
CS 61C: Great Ideas in Computer Architecture Introduc)on to C, Part II Instructors: Krste Asanovic & Vladimir Stojanovic h>p://inst.eecs.berkeley.edu/~cs61c/sp15 1 Review: Components of a Computer Processor
More informationPointers, Arrays, Memory: AKA the cause of those Segfaults
Computer Science 61C Spring 2018 Wawrzynek and Weaver Pointers, Arrays, Memory: AKA the cause of those F@#)(#@*( Segfaults 1 Agenda Computer Science 61C Spring 2018 Pointers Arrays in C Memory Allocation
More informationCS 61C: Great Ideas in Computer Architecture. Lecture 3: Pointers. Bernhard Boser & Randy Katz
CS 61C: Great Ideas in Computer Architecture Lecture 3: Pointers Bernhard Boser & Randy Katz http://inst.eecs.berkeley.edu/~cs61c Agenda Pointers in C Arrays in C This is not on the test Pointer arithmetic
More informationC: Introduction, Pointers Instructors: Steven Ho, Nick Riasanovsky
C: Introduction, Pointers Instructors: Steven Ho, Nick Riasanovsky Overflow Overflow is when the result of an arithmetic operation can t be represented by the (FINITE) hardware bits i.e. the result is
More informationCS 61C: Great Ideas in Computer Architecture (Machine Structures) Introduc)on to C (Part I) We are here!
CS 61C: Great Ideas in Computer Architecture (Machine Structures) Introduc)on to C (Part I) Instructors: Randy H. Katz David A. PaGerson hgp://inst.eecs.berkeley.edu/~cs61c/sp11 Summary Spring 2011 - -
More informationLecture 8: Pointer Arithmetic (review) Endianness Functions and pointers
CSE 30: Computer Organization and Systems Programming Lecture 8: Pointer Arithmetic (review) Endianness Functions and pointers Diba Mirza University of California, San Diego 1 Q: Which of the assignment
More informationCS 61C: Great Ideas in Computer Architecture Introduc)on to C, Part II. Control. Consider memory to be a single huge array
Review: Components of a Computer CS 61C: Great Ideas in Computer Architecture Introduc)on to C, Part II Processor Control Datapath PC Enable? Read/Write Address Memory Program Bytes Input Instructors:
More informationAgenda. Components of a Computer. Computer Memory Type Name Addr Value. Pointer Type. Pointers. CS 61C: Great Ideas in Computer Architecture
CS 61C: Great Ideas in Computer Architecture Krste Asanović & Randy Katz http://inst.eecs.berkeley.edu/~cs61c And in Conclusion, 2 Processor Control Datapath Components of a Computer PC Registers Arithmetic
More informationCS 61C: Great Ideas in Computer Architecture. Lecture 3: Pointers. Krste Asanović & Randy Katz
CS 61C: Great Ideas in Computer Architecture Lecture 3: Pointers Krste Asanović & Randy Katz http://inst.eecs.berkeley.edu/~cs61c Agenda Pointers in C Arrays in C This is not on the test Pointer arithmetic
More informationECE 250 / CS 250 Computer Architecture. C to Binary: Memory & Data Representations. Benjamin Lee
ECE 250 / CS 250 Computer Architecture C to Binary: Memory & Data Representations Benjamin Lee Slides based on those from Alvin Lebeck, Daniel Sorin, Andrew Hilton, Amir Roth, Gershon Kedem Administrivia
More informationCS 61C: Great Ideas in Computer Architecture Lecture 2: Introduction to C, Part I
CS 61C: Great Ideas in Computer Architecture Lecture 2: Introduction to C, Part I Instructors: Vladimir Stojanovic & Nicholas Weaver http://inst.eecs.berkeley.edu/~cs61c/ 1 Agenda Everything is a Number
More informationCS 110 Computer Architecture. Lecture 2: Introduction to C, Part I. Instructor: Sören Schwertfeger.
CS 110 Computer Architecture Lecture 2: Introduction to C, Part I Instructor: Sören Schwertfeger http://shtech.org/courses/ca/ School of Information Science and Technology SIST ShanghaiTech University
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 informationCSE 374 Programming Concepts & Tools
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 8 C: Miscellanea Control, Declarations, Preprocessor, printf/scanf 1 The story so far The low-level execution model of a process (one
More informationCS 102 Computer Architecture. Lecture 2: Introduction to C, Part I. Instructor: Sören Schwertfeger.
CS 102 Computer Architecture Lecture 2: Introduction to C, Part I Instructor: Sören Schwertfeger http://shtech.org/courses/ca/ School of Information Science and Technology SIST ShanghaiTech University
More informationSlide Set 1. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary
Slide Set 1 for ENCM 339 Fall 2016 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary September 2016 ENCM 339 Fall 2016 Slide Set 1 slide 2/43
More informationC Review. MaxMSP Developers Workshop Summer 2009 CNMAT
C Review MaxMSP Developers Workshop Summer 2009 CNMAT C Syntax Program control (loops, branches): Function calls Math: +, -, *, /, ++, -- Variables, types, structures, assignment Pointers and memory (***
More informationCS61, Fall 2012 Section 2 Notes
CS61, Fall 2012 Section 2 Notes (Week of 9/24-9/28) 0. Get source code for section [optional] 1: Variable Duration 2: Memory Errors Common Errors with memory and pointers Valgrind + GDB Common Memory Errors
More informationC'Programming' data'separate'from'methods/functions' Low'memory'overhead'compared'to'Java'
' 0 3 ' CSE 1 Lecture'3:''' ''''''''''''' C'Programm ing'' C'Programming' 'Procedural'thought'process' 'No'built'in'object'abstractions' data'separate'from'methods/functions' Low'memory'overhead'compared'to'Java'
More informationCS 61C: Great Ideas in Computer Architecture Introduction to C
CS 61C: Great Ideas in Computer Architecture Introduction to C Instructors: Vladimir Stojanovic & Nicholas Weaver http://inst.eecs.berkeley.edu/~cs61c/ 1 Agenda C vs. Java vs. Python Quick Start Introduction
More informationArrays and Pointers in C. Alan L. Cox
Arrays and Pointers in C Alan L. Cox alc@rice.edu Objectives Be able to use arrays, pointers, and strings in C programs Be able to explain the representation of these data types at the machine level, including
More informationCSci 4061 Introduction to Operating Systems. Programs in C/Unix
CSci 4061 Introduction to Operating Systems Programs in C/Unix Today Basic C programming Follow on to recitation Structure of a C program A C program consists of a collection of C functions, structs, arrays,
More informationClass Information ANNOUCEMENTS
Class Information ANNOUCEMENTS Third homework due TODAY at 11:59pm. Extension? First project has been posted, due Monday October 23, 11:59pm. Midterm exam: Friday, October 27, in class. Don t forget to
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 informationC++ ARRAYS POINTERS POINTER ARITHMETIC. Problem Solving with Computers-I
C++ ARRAYS POINTERS POINTER ARITHMETIC Problem Solving with Computers-I General model of memory Sequence of adjacent cells Each cell has 1-byte stored in it Each cell has an address (memory location) Memory
More informationCS 220: Introduction to Parallel Computing. Beginning C. Lecture 2
CS 220: Introduction to Parallel Computing Beginning C Lecture 2 Today s Schedule More C Background Differences: C vs Java/Python The C Compiler HW0 8/25/17 CS 220: Parallel Computing 2 Today s Schedule
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 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 informationCS 110 Computer Architecture. Lecture 2: Introduction to C, Part I. Instructor: Sören Schwertfeger.
CS 110 Computer Architecture Lecture 2: Introduction to C, Part I Instructor: Sören Schwertfeger http://shtech.org/courses/ca/ School of Information Science and Technology SIST ShanghaiTech University
More informationLectures 5-6: Introduction to C
Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most
More informationNumbers: positional notation. CS61C Machine Structures. Faux Midterm Review Jaein Jeong Cheng Tien Ee. www-inst.eecs.berkeley.
CS 61C Faux Midterm Review (1) CS61C Machine Structures Faux Midterm Review 2002-09-29 Jaein Jeong Cheng Tien Ee www-inst.eecs.berkeley.edu/~cs61c/ Numbers: positional notation Number Base B B symbols
More informationCSE 303: Concepts and Tools for Software Development
CSE 303: Concepts and Tools for Software Development Hal Perkins Winter 2009 Lecture 7 Introduction to C: The C-Level of Abstraction CSE 303 Winter 2009, Lecture 7 1 Welcome to C Compared to Java, in rough
More informationChapter 16. Pointers and Arrays. Address vs. Value. Another Need for Addresses
Chapter 16 Pointers and Arrays Based on slides McGraw-Hill Additional material 200/2005 Lewis/Martin Pointers and Arrays We've seen examples of both of these in our LC- programs; now we'll see them in
More informationWhy Pointers. Pointers. Pointer Declaration. Two Pointer Operators. What Are Pointers? Memory address POINTERVariable Contents ...
Why Pointers Pointers They provide the means by which functions can modify arguments in the calling function. They support dynamic memory allocation. They provide support for dynamic data structures, such
More informationFinal CSE 131B Spring 2004
Login name Signature Name Student ID Final CSE 131B Spring 2004 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 (25 points) (24 points) (32 points) (24 points) (28 points) (26 points) (22 points)
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 informationCS 61C: Great Ideas in Computer Architecture. Lecture 2: Numbers & C Language. Krste Asanović & Randy Katz
CS 61C: Great Ideas in Computer Architecture Lecture 2: Numbers & C Language Krste Asanović & Randy Katz http://inst.eecs.berkeley.edu/~cs61c Numbers wrap-up This is not on the exam! Break C Primer Administrivia,
More informationAgenda. CS 61C: Great Ideas in Computer Architecture. Lecture 2: Numbers & C Language 8/29/17. Recap: Binary Number Conversion
CS 61C: Great Ideas in Computer Architecture Lecture 2: Numbers & C Language Krste Asanović & Randy Katz http://inst.eecs.berkeley.edu/~cs61c Numbers wrap-up This is not on the exam! Break C Primer Administrivia,
More informationArray Initialization
Array Initialization Array declarations can specify initializations for the elements of the array: int primes[10] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ; initializes primes[0] to 2, primes[1] to 3, primes[2]
More informationCSC C69: OPERATING SYSTEMS
CSC C69: OPERATING SYSTEMS Tutorial 1 Thursday, Jan 17, 2013 TA: Ioan Stefanovici (ioan@cs.toronto.edu) HOW DO YOU SUCCEED IN THIS COURSE? Show up to lectures & tutorials (way too much material) Work on
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 informationCS 261 Fall C Introduction. Variables, Memory Model, Pointers, and Debugging. Mike Lam, Professor
CS 261 Fall 2017 Mike Lam, Professor C Introduction Variables, Memory Model, Pointers, and Debugging The C Language Systems language originally developed for Unix Imperative, compiled language with static
More informationUnder the Hood: Data Representations, Memory and Bit Operations. Computer Science 104 Lecture 3
Under the Hood: Data Representations, Memory and Bit Operations Computer Science 104 Lecture 3 Homework #1 Due Feb 6 Reading TAs Finish Chapter 1 Start Chapter 2 Admin +1 UTA: Michael Zhou Lindsay is Head
More informationReviewing gcc, make, gdb, and Linux Editors 1
Reviewing gcc, make, gdb, and Linux Editors 1 Colin Gordon csgordon@cs.washington.edu University of Washington CSE333 Section 1, 3/31/11 1 Lots of material borrowed from 351/303 slides Colin Gordon (University
More informationHigh Performance Computing MPI and C-Language Seminars 2009
High Performance Computing - Seminar Plan Welcome to the High Performance Computing seminars for 2009. Aims: Introduce the C Programming Language. Basic coverage of C and programming techniques needed
More informationELEC 377 C Programming Tutorial. ELEC Operating Systems
ELE 377 Programming Tutorial Outline! Short Introduction! History & Memory Model of! ommon Errors I have seen over the years! Work through a linked list example on the board! - uses everything I talk about
More informationLecture 03 Bits, Bytes and Data Types
Lecture 03 Bits, Bytes and Data Types Computer Languages A computer language is a language that is used to communicate with a machine. Like all languages, computer languages have syntax (form) and semantics
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 informationOutline. Computer programming. Debugging. What is it. Debugging. Hints. Debugging
Outline Computer programming Debugging Hints Gathering evidence Common C errors "Education is a progressive discovery of our own ignorance." Will Durant T.U. Cluj-Napoca - Computer Programming - lecture
More informationA brief introduction to C programming for Java programmers
A brief introduction to C programming for Java programmers Sven Gestegård Robertz September 2017 There are many similarities between Java and C. The syntax in Java is basically
More informationThese are notes for the third lecture; if statements and loops.
These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern
More informationOne-Slide Summary. Lecture Outline. Language Security
Language Security Or: bringing a knife to a gun fight #1 One-Slide Summary A language s design principles and features have a strong influence on the security of programs written in that language. C s
More informationLectures 5-6: Introduction to C
Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most
More informationIntroduction to C. Robert Escriva. Cornell CS 4411, August 30, Geared toward programmers
Introduction to C Geared toward programmers Robert Escriva Slide heritage: Alin Dobra Niranjan Nagarajan Owen Arden Cornell CS 4411, August 30, 2010 1 Why C? 2 A Quick Example 3 Programmer s Responsibilities
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 informationCS107 Handout 08 Spring 2007 April 9, 2007 The Ins and Outs of C Arrays
CS107 Handout 08 Spring 2007 April 9, 2007 The Ins and Outs of C Arrays C Arrays This handout was written by Nick Parlante and Julie Zelenski. As you recall, a C array is formed by laying out all the elements
More information