Week 5 9 April 2018 NWEN 241 More on pointers. Alvin Valera. School of Engineering and Computer Science Victoria University of Wellington
|
|
- Hilda Butler
- 6 years ago
- Views:
Transcription
1 Week 5 9 April 2018 NWEN 241 More on pointers Alvin Valera School of Engineering and Computer Science Victoria University of Wellington
2 Admin stuf Exercises (Set 3): Covers Weeks 4-5 lessons Download from NWEN 241 course wiki Solutions will be released on Friday (13 Apr 2018) Some of the questions will be discussed in Tutorial NWEN 241: Systems Programming 2
3 Admin stuf Clarifications on Programming Assignment 2: How to deal with a user input that is already taken You can either (a) skip player and go to the other player, or (b) force the player to enter an untaken box Important thing is your program should handle them consistently and not crash when such exceptions occur How to deal with a user input that is out of bounds or invalid Force the player to enter a value that is within bounds. If user enters value that is already taken, then apply (a) or (b) NWEN 241: Systems Programming 3
4 Recap: pointer basics A pointer is a variable that contains memory address A pointer points to a memory location To obtain value of data pointed to by pointer, need to perform indirection or dereferencing NWEN241 Systems Programming 4
5 Recap: pointer-related operators Address operator (&) The operation will return the memory location of the variable Can be applied on any variable, including pointers Indirection operator (*) The operation will return the value of data pointed to by pointer Can only be applied on pointer variables NWEN241 Systems Programming 5
6 Recap: pointer arithmetic Addition and subtraction can be performed on pointer variables Result depends on data type pointed to by pointer Suppose : data_type *name; name + k name - k Evaluated as name + k*sizeof(data_type) Evaluated as name - k*sizeof(data_type) NWEN241 Systems Programming 6
7 Recap: Usage of pointers 1) Provide an alternative means of accessing information stored in arrays 2) Provide an alternative (and more eficient) means of passing parameters to functions 3) Enable dynamic data structures, that are built up from blocks of memory allocated from the heap at run time NWEN241 Systems Programming 7
8 Traversing arrays using pointers The usual way to iterate over arrays: int a[] = {... ; int len = sizeof(a)/sizeof(int); for(int i = 0; i < len; i++) { /* Do something about a[i] */ Using pointers: int a[] = {... ; int len = sizeof(a)/sizeof(int); for(int *ip = a; ip < a + len; ip++) { /* Do something about *ip */ NWEN241 Systems Programming 8
9 Traversing arrays using pointers int a[] = {... ; int len = sizeof(a)/sizeof(int); for(int *ip = a; ip < a + len; ip++) { /* Do something about *ip */ 1 st iteration: a... ip NWEN241 Systems Programming 9
10 Traversing arrays using pointers int a[] = {... ; int len = sizeof(a)/sizeof(int); for(int *ip = a; ip < a + len; ip++) { /* Do something about *ip */ 2 nd iteration: a... ip NWEN241 Systems Programming 10
11 Traversing arrays using pointers int a[] = {... ; int len = sizeof(a)/sizeof(int); for(int *ip = a; ip < a + len; ip++) { /* Do something about *ip */ 3 rd iteration: a... ip NWEN241 Systems Programming 11
12 Traversing arrays using pointers int a[] = {... ; int len = sizeof(a)/sizeof(int); for(int *ip = a; ip < a + len; ip++) { /* Do something about *ip */ (len-1)th iteration: a... ip NWEN241 Systems Programming 12
13 A note on operator precedence Previously, operator precedence table from Kernighan & Ritchie: NWEN241 Systems Programming 13
14 A note on operator precedence Slight correction: These only refer to prefix ++ and -- Postfix ++ and has level 1 precedence, i.e., the same as (), [], -> and. NWEN241 Systems Programming 14
15 Increment and indirection together Suppose int *ip; int i; What does i = *ip++ mean? Since ++ has higher precedence than *, the RHS expression evaluates to *(ip++) which means i = *ip; ip = ip + 1; NWEN241 Systems Programming 15
16 Increment and indirection together Suppose int *ip; int i; What does i = *++ip mean? Both ++ and * have same precedence, so associativity is applied on RHS yielding *(++ip) which means ip = ip + 1; i = *ip; NWEN241 Systems Programming 16
17 Increment and indirection together Suppose int *ip; int i; How to increment the value of whatever ip points to? (*ip)++; NWEN241 Systems Programming 17
18 Strings Pointers int strlen (char *s) { int n; for(n=0; *s!='\0'; s++) n++; return n; Notice in the second strcmp() and second and third strcpy(), the use of pointers to iterate through the strings int strcmp(char *s, char *t) { int i; for(i=0;s[i]==t[i];i++) if(s[i] == '\0') return 0; return s[i] t[i]; int strcmp(char *s, char *t) { for(;*s == *t; s++,t++) if (*s == '\0') return 0; return *s - *t; void strcpy(char *s, char *t) { int i = 0; while((s[i]=t[i])!= '\0') i++; void strcpy(char *s, char *t) { while((*s=*t)!= '\0') { s++; t++; void strcpy(char *s, char *t) { while((*s++=*t++)!= '\0'); The conciseness of the last strcmp() and strcpy() make them hard to understand NWEN241 Systems Programming 18
19 A closer look at strcmp() int strcmp(char *s, char *t) { for(;*s == *t; s++,t++) if (*s == '\0') return 0; return *s - *t; What is the meaning of the return value? If strings are the same, return value is 0 If strings are not the same, return value is *s - *t Return value indicates lexicographical order of s and t: Positive if s appears afer t, negative otherwise NWEN241 Systems Programming 19
20 Reference / variable parameters To make changes to a variable that exist afer a function ends, we pass the address of the variable to the function (a reference parameter) Then we use indirection operator inside the function to change the value the parameter points to: int a, b; swap(&a, &b); void swap(int *px, int *py) { int tmp; tmp = *px; *px = *py; // values stored at *py = tmp; // addresses of 'a' // and 'b' are swapped NWEN241 Systems Programming 20
21 Returning pointers from functions A function can also return a pointer value: float *find_max(float A[], int N) { int i; float *the_max = &(A[0]); for (i = 1; i < N; i++) if (A[i] > *the_max) the_max = &(A[i]); return the_max; int main(void) { float scores[5] = {10.0, 8.0, 5.5, 2.0, 4.1; float *max_score; max_score = find_max(scores, 5); printf("%.1f\n",*max_score); return 0; NWEN241 Systems Programming 21
22 Returning pointers from functions Caution!!! In functions, do not do return p, where p is a pointer to a local variable. This is because local variables are de-allocated when the function ends so whatever p is pointing to will no longer be available but if you return the pointer, then you still are pointing at that memory location even though you no longer know what is there Question: Why is it allowed in the previous example? NWEN241 Systems Programming 22
23 Pointer to pointers A pointer can also be made to point to a pointer variable (but the pointer must be of a type that allows it to point to a pointer) Example: int V = 101; int *P = &V; /* P points to int V */ int **Q = &P; /* Q points to int pointer P */ printf("%d %d %d\n", V, *P, **Q); /* prints times */ NWEN241 Systems Programming 23
24 Pointer arithmetic Assume short is 2 bytes, and pointer variable (address size) is 4 bytes. short a[10]={5, 10, 15, ; short *pa, **ppa; int i=5; pa = &a; ppa = &pa; ppa pa 640 Variable Address Value a a pa ppa Questions: Expression Value Note pa *2 pa *2 pa+i i*2 *pa *(pa+1) 10 a[1]=pa[1]=*(a+1) pa[2] *ppa 640 Value of pa *ppa pa+1 *(*ppa+1) 10 *(pa+1) *(ppa+1) invalid *(704) NWEN241 Systems Programming 24
25 Pointer types Pointers are generally of the same size, but it is inappropriate to assign an address of one type of variable to a diferent type of pointer Example: int V = 101; float *P = &V; /* generally results in a warning */ Warning rather than error because C will allow you to do this (it is appropriate in certain situations) NWEN241 Systems Programming 25
26 Casting pointers When assigning a memory address of a variable of one type to a pointer that points to another type, it is best to use the cast operator to indicate the cast is intentional (this will remove the warning). Example: int V = 101; float *P = (float *) &V; /* Casts int address to float * */ Removes warning, but is still unsafe to do this!!! NWEN241 Systems Programming 26
27 General (void) pointer A void * is considered to be a general pointer No cast is needed to assign an address to a void * or from a void * to another pointer type Example: int V = 101; void *G = &V; /* No warning */ float *P = G; /* No warning, still unsafe */ Certain library functions return void * results NWEN241 Systems Programming 27
28 Pointers and const Const pointer: cannot be reassigned to point to a diferent location from the one it is initially assigned, but it can be used to modify the location that it points to data_type * const p; Pointer to a const location: can be reassigned to point to a diferent location, but it cannot be used to modify any location that it points to const data_type * p; Const pointer to a const location: can neither be reassigned nor used to modify the location that it points to const data_type * const p; NWEN241 Systems Programming 28
29 Pointer to function Function code is stored in memory Functions also occupy memory locations therefore every function has an address just like variables Just like ordinary variables, the address of a function refers to its starting address C does not require that pointers only point to data, it is possible to have pointers to functions NWEN241 Systems Programming 29
30 Defining a function pointer Declaration: return_type (*name)(param_types); Examples int (*f)(int, float); int *(*f)(int, float); Pointer to a function that takes an int and float arguments, resp., and returns an int Pointer to a function that takes an int and float arguments, resp., and returns a pointer to int NWEN241 Systems Programming 30
31 Using a function pointer /* f is a function pointer */ int (*fp)(int, float); int F1(int i, float f) { return i/f; int main(void) { /* Assignment: let f point to F1 */ fp = &F1; /* fp = F1; is also ok */ /* Invocation */ float a = fp(1, 2.0); /* This is equivalent to calling F1(1, 2.0) */ NWEN241 Systems Programming 31
32 Comparing function pointers Can use the equality (==) operator Example: /* f is a function pointer */ int (*fp)(int, float); int F1(int i, float f) { return i/f; int main(void) { /* Assignment: let f point to F1 */ fp = &F1; /* fp = F1; is also ok */ if(fp == &F1) printf("points to F1\n"); NWEN241 Systems Programming 32
33 Safety concerns What if uninitialized function pointer value is accessed Safest outcome: memory error, and program is terminated But what if the garbage value is a valid address? Worst case: address contains program instruction execution continues, with random results Hard to trace the cause of the erroneous behavior NWEN241 Systems Programming 33
34 Usage of function pointers For implementing callback functions Function pointer is passed as an argument to a function The function will then invoke the passed function pointer at a given time void qsort(void *base, size_t nitems, size_t size, int (*compare)(const void *, const void*)); base Pointer to the first element of the array to be sorted nitems Number of elements in the array pointed by base size Size in bytes of each element in the array. compare This is the function that compares two elements. NWEN241 Systems Programming 34
35 Next lecture Storage classes NWEN241 Systems Programming 35
Pointers (part 1) What are pointers? EECS We have seen pointers before. scanf( %f, &inches );! 25 September 2017
Pointers (part 1) EECS 2031 25 September 2017 1 What are pointers? We have seen pointers before. scanf( %f, &inches );! 2 1 Example char c; c = getchar(); printf( %c, c); char c; char *p; c = getchar();
More informationArrays and Pointers (part 1)
Arrays and Pointers (part 1) CSE 2031 Fall 2012 Arrays Grouping of data of the same type. Loops commonly used for manipulation. Programmers set array sizes explicitly. Arrays: Example Syntax type name[size];
More informationArrays and Pointers. CSE 2031 Fall November 11, 2013
Arrays and Pointers CSE 2031 Fall 2013 November 11, 2013 1 Arrays l Grouping of data of the same type. l Loops commonly used for manipulation. l Programmers set array sizes explicitly. 2 Arrays: Example
More informationArrays and Pointers. Arrays. Arrays: Example. Arrays: Definition and Access. Arrays Stored in Memory. Initialization. EECS 2031 Fall 2014.
Arrays Arrays and Pointers l Grouping of data of the same type. l Loops commonly used for manipulation. l Programmers set array sizes explicitly. EECS 2031 Fall 2014 November 11, 2013 1 2 Arrays: Example
More informationArrays and Pointers (part 1)
Arrays and Pointers (part 1) CSE 2031 Fall 2010 17 October 2010 1 Arrays Grouping of data of the same type. Loops commonly used for manipulation. Programmers set array sizes explicitly. 2 1 Arrays: Example
More informationPointers. Pointer References
Pointers Pointers are variables whose values are the addresses of other variables Basic operations address of (reference) indirection (dereference) Suppose x and y are integers, p is a pointer to an integer:
More informationPointers. Pointers. Pointers (cont) CS 217
Pointers CS 217 Pointers Variables whose values are the addresses of variables Operations address of (reference) & indirection (dereference) * arithmetic +, - Declaration mimics use char *p; *p is a char,
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 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 informationSYSC 2006 C Winter 2012
SYSC 2006 C Winter 2012 Pointers and Arrays Copyright D. Bailey, Systems and Computer Engineering, Carleton University updated Sept. 21, 2011, Oct.18, 2011,Oct. 28, 2011, Feb. 25, 2011 Memory Organization
More informationC: Pointers, Arrays, and strings. Department of Computer Science College of Engineering Boise State University. August 25, /36
Department of Computer Science College of Engineering Boise State University August 25, 2017 1/36 Pointers and Arrays A pointer is a variable that stores the address of another variable. Pointers are similar
More information[0569] p 0318 garbage
A Pointer is a variable which contains the address of another variable. Declaration syntax: Pointer_type *pointer_name; This declaration will create a pointer of the pointer_name which will point to the
More informationI2204 ImperativeProgramming Semester: 1 Academic Year: 2018/2019 Credits: 5 Dr Antoun Yaacoub
Lebanese University Faculty of Science Computer Science BS Degree I2204 ImperativeProgramming Semester: 1 Academic Year: 2018/2019 Credits: 5 Dr Antoun Yaacoub 2Computer Science BS Degree -Imperative Programming
More information... Lecture 12. Pointers
Copyright 1996 David R. Hanson Computer Science 126, Fall 1996 12-1 Lecture 12. Pointers Variables denote locations in memory that can hold values; arrays denote contiguous locations int i = 8, sum = -456;
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 informationGoals of this Lecture
C Pointers Goals of this Lecture Help you learn about: Pointers and application Pointer variables Operators & relation to arrays 2 Pointer Variables The first step in understanding pointers is visualizing
More informationC: Pointers. C: Pointers. Department of Computer Science College of Engineering Boise State University. September 11, /21
Department of Computer Science College of Engineering Boise State University September 11, 2017 1/21 Pointers A pointer is a variable that stores the address of another variable. Pointers are similar to
More informationWeek 2 / Lecture 2 15 March 2017 NWEN 241 Control constructs, Functions. Alvin Valera
Week 2 / Lecture 2 15 March 2017 NWEN 241 Control constructs, Functions Alvin Valera School of Engineering and Computer Science Victoria University of Wellington Admin stuff Tutorial #2 Expectations on
More informationCOMP26120: Pointers in C (2018/19) Lucas Cordeiro
COMP26120: Pointers in C (2018/19) Lucas Cordeiro lucas.cordeiro@manchester.ac.uk Organisation Lucas Cordeiro (Senior Lecturer, FM Group) lucas.cordeiro@manchester.ac.uk Office: 2.44 Office hours: 10-11
More informationPOINTERS - Pointer is a variable that holds a memory address of another variable of same type. - It supports dynamic allocation routines. - It can improve the efficiency of certain routines. C++ Memory
More informationPointers as Arguments
Introduction as Arguments How it Works called program on start of execution xw = &i xf = &d after excution xw = &i xf = &d caller program i? d? i 3 d.14159 x 3.14159 x 3.14159 R. K. Ghosh (IIT-Kanpur)
More informationOther C materials before pointer Common library functions [Appendix of K&R] 2D array, string manipulations. <stdlib.
1 The previous lecture Other C materials before pointer Common library functions [Appendix of K&R] 2D array, string manipulations Pointer basics 1 Common library functions [Appendix of K+R]
More informationMultidimension array, array of strings
1 Multidimension array, array of strings char messages[3][7] ={ Hello, Hi, There ; Array of strings 0 1 2 0 1 2 3 4 5 6 H e l l o \0 H i \0 T h e r e \0 Each row (e.g., message[0]) is a char array (string)
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 information2.2 Pointers. Department of CSE
2.2 Pointers 1 Department of CSE Objectives To understand the need and application of pointers To learn how to declare a pointer and how it is represented in memory To learn the relation between arrays
More informationArrays, Pointers and Memory Management
Arrays, Pointers and Memory Management EECS 2031 Summer 2014 Przemyslaw Pawluk May 20, 2014 Answer to the question from last week strct->field Returns the value of field in the structure pointed to by
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 informationSYSC 2006 C Winter String Processing in C. D.L. Bailey, Systems and Computer Engineering, Carleton University
SYSC 2006 C Winter 2012 String Processing in C D.L. Bailey, Systems and Computer Engineering, Carleton University References Hanly & Koffman, Chapter 9 Some examples adapted from code in The C Programming
More informationData Types and Computer Storage Arrays and Pointers. K&R, chapter 5
Data Types and Computer Storage Arrays and Pointers K&R, chapter 5 Fundamental Data Types Most fundamental types are numeric (integer): - char - signed or unsigned - short int - signed or unsigned - int
More informationComputer Programming: Skills & Concepts (CP) Strings
CP 14 slide 1 Tuesday 31 October 2017 Computer Programming: Skills & Concepts (CP) Strings Ajitha Rajan Tuesday 31 October 2017 Last lecture Input handling char CP 14 slide 2 Tuesday 31 October 2017 Today
More informationChapter 5. Section 5.4 The Common String Library Functions. CS 50 Hathairat Rattanasook
Chapter 5 Section 5.4 The Common String Library Functions CS 50 Hathairat Rattanasook Library Functions We already discussed the library function fgets() Library functions are available: to find the length
More informationComputer Programming. Pointers. Marius Minea. 20 November 2017
Computer Programming Pointers Marius Minea marius@cs.upt.ro 20 November 2017 Pointers are addresses Any lvalue (variable x, array element, structure field) of type T has an address &x of type T * where
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 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 informationC Pointers. CS 2060 Week 6. Prof. Jonathan Ventura
CS 2060 Week 6 1 Pointer Variables 2 Pass-by-reference 3 const pointers 4 Pointer arithmetic 5 sizeof 6 Arrays of pointers 7 Next Time Pointers The pointer is one of C s most powerful and important features.
More informationPointer in C SHARDA UNIVERSITY. Presented By: Pushpendra K. Rajput Assistant Professor
Pointer in C Presented By: Pushpendra K. Rajput Assistant Professor 1 Introduction The Pointer is a Variable which holds the Address of the other Variable in same memory. Such as Arrays, structures, and
More informationProgramming. Pointers, Multi-dimensional Arrays and Memory Management
Programming Pointers, Multi-dimensional Arrays and Memory Management Summary } Computer Memory } Pointers } Declaration, assignment, arithmetic and operators } Casting and printing pointers } Relationship
More informationC Language Part 1 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee
C Language Part 1 (Minor modifications by the instructor) References C for Python Programmers, by Carl Burch, 2011. http://www.toves.org/books/cpy/ The C Programming Language. 2nd ed., Kernighan, Brian,
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 informationPointers and Structure. Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island
Pointers and Structure Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island 1 Pointer Variables Each variable in a C program occupies space in
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 informationby Pearson Education, Inc. All Rights Reserved.
Let s improve the bubble sort program of Fig. 6.15 to use two functions bubblesort and swap. Function bubblesort sorts the array. It calls function swap (line 51) to exchange the array elements array[j]
More informationArrays Arrays and pointers Loops and performance Array comparison Strings. John Edgar 2
CMPT 125 Arrays Arrays and pointers Loops and performance Array comparison Strings John Edgar 2 Python a sequence of data access elements with [index] index from [0] to [len-1] dynamic length heterogeneous
More informationCS1100 Introduction to Programming
CS1100 Introduction to Programming Sorting Strings and Pointers Madhu Mutyam Department of Computer Science and Engineering Indian Institute of Technology Madras Lexicographic (Dictionary) Ordering Badri
More informationCS2351 Data Structures. Lecture 7: A Brief Review of Pointers in C
CS2351 Data Structures Lecture 7: A Brief Review of Pointers in C 1 About this lecture Pointer is a useful object that allows us to access different places in our memory We will review the basic use of
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 informationCSE2301. Arrays. Arrays. Arrays and Pointers
Warning: These notes are not complete, it is a Skelton that will be modified/add-to in the class. If you want to us them for studying, either attend the class or get the completed notes from someone who
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 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 informationIntroduction to C++ Introduction. Structure of a C++ Program. Structure of a C++ Program. C++ widely-used general-purpose programming language
Introduction C++ widely-used general-purpose programming language procedural and object-oriented support strong support created by Bjarne Stroustrup starting in 1979 based on C Introduction to C++ also
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 informationMYcsvtu Notes LECTURE 34. POINTERS
LECTURE 34 POINTERS Pointer Variable Declarations and Initialization Pointer variables Contain memory addresses as their values Normal variables contain a specific value (direct reference) Pointers contain
More informationC strings. (Reek, Ch. 9) 1 CS 3090: Safety Critical Programming in C
C strings (Reek, Ch. 9) 1 Review of strings Sequence of zero or more characters, terminated by NUL (literally, the integer value 0) NUL terminates a string, but isn t part of it important for strlen()
More informationBasic and Practice in Programming Lab7
Basic and Practice in Programming Lab7 Variable and Its Address (1/2) What is the variable? Abstracted representation of allocated memory Having address & value Memory address 10 0x00000010 a int a = 10;
More informationStrings(2) CS 201 String. String Constants. Characters. Strings(1) Initializing and Declaring String. Debzani Deb
CS 201 String Debzani Deb Strings(2) Two interpretations of String Arrays whose elements are characters. Pointer pointing to characters. Strings are always terminated with a NULL characters( \0 ). C needs
More informationSystems Programming and Computer Architecture ( )
Systems Group Department of Computer Science ETH Zürich Systems Programming and Computer Architecture (252-0061-00) Timothy Roscoe Herbstsemester 2016 1 4: Pointers Computer Architecture and Systems Programming
More informationJagannath Institute of Management Sciences Lajpat Nagar. BCA II Sem. C Programming
Jagannath Institute of Management Sciences Lajpat Nagar BCA II Sem C Programming UNIT I Pointers: Introduction to Pointers, Pointer Notation,Decalaration and Initialization, Accessing variable through
More informationAdvanced Pointer Topics
Advanced Pointer Topics Pointers to Pointers A pointer variable is a variable that takes some memory address as its value. Therefore, you can have another pointer pointing to it. int x; int * px; int **
More informationPointers. 10/5/07 Pointers 1
Pointers 10/5/07 Pointers 1 10/5/07 Pointers 2 Variables Essentially, the computer's memory is made up of bytes. Each byte has an address, associated with it. 10/5/07 Pointers 3 Variable For example 1:#include
More informationIntroduction to C++ with content from
Introduction to C++ with content from www.cplusplus.com 2 Introduction C++ widely-used general-purpose programming language procedural and object-oriented support strong support created by Bjarne Stroustrup
More informationMemory, Arrays & Pointers
1 Memory, Arrays & Pointers Memory int main() { char c; int i,j; double x; c i j x 2 Arrays Defines a block of consecutive cells int main() { int i; int a[3]; i a[0] a[1] a[2] Arrays - the [ ] operator
More informationmith College Computer Science CSC270 Spring 2016 Circuits and Systems Lecture Notes, Week 11 Dominique Thiébaut
mith College Computer Science CSC270 Spring 2016 Circuits and Systems Lecture Notes, Week 11 Dominique Thiébaut dthiebaut@smithedu Outline A Few Words about HW 8 Finish the Input Port Lab! Revisiting Homework
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 informationAnnouncements. assign0 due tonight. Labs start this week. No late submissions. Very helpful for assign1
Announcements assign due tonight No late submissions Labs start this week Very helpful for assign1 Goals for Today Pointer operators Allocating memory in the heap malloc and free Arrays and pointer arithmetic
More informationFORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each):
FORM 1 (Please put your name and section number (001/10am or 002/2pm) on the scantron!!!!) CS 161 Exam II: True (A)/False(B) (2 pts each): 1. If a function has default arguments, they can be located anywhere
More informationHigh Performance Programming Programming in C part 1
High Performance Programming Programming in C part 1 Anastasia Kruchinina Uppsala University, Sweden April 18, 2017 HPP 1 / 53 C is designed on a way to provide a full control of the computer. C is the
More informationQuiz 0 Answer Key. Answers other than the below may be possible. Multiple Choice. 0. a 1. a 2. b 3. c 4. b 5. d. True or False.
Quiz 0 Answer Key Answers other than the below may be possible. Multiple Choice. 0. a 1. a 2. b 3. c 4. b 5. d True or False. 6. T or F 7. T 8. F 9. T 10. T or F Itching for Week 0? 11. 00011001 + 00011001
More informationCrash Course into. Prof. Dr. Renato Pajarola
Crash Course into Prof. Dr. Renato Pajarola These slides may not be copied or distributed without explicit permission by all original copyright holders C Language Low-level programming language General
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 informationParameter passing. Programming in C. Important. Parameter passing... C implements call-by-value parameter passing. UVic SEng 265
Parameter passing Programming in C UVic SEng 265 Daniel M. German Department of Computer Science University of Victoria 1 SEng 265 dmgerman@uvic.ca C implements call-by-value parameter passing int a =
More informationDynamic Allocation in C
Dynamic Allocation in C C Pointers and Arrays 1 The previous examples involved only targets that were declared as local variables. For serious development, we must also be able to create variables dynamically,
More informationExercise Session 2 Simon Gerber
Exercise Session 2 Simon Gerber CASP 2014 Exercise 2: Binary search tree Implement and test a binary search tree in C: Implement key insert() and lookup() functions Implement as C module: bst.c, bst.h
More informationArrays and Pointers. CSC209: Software Tools and Systems Programming (Winter 2019) Furkan Alaca & Paul Vrbik. University of Toronto Mississauga
Arrays and Pointers CSC209: Software Tools and Systems Programming (Winter 2019) Furkan Alaca & Paul Vrbik University of Toronto Mississauga https://mcs.utm.utoronto.ca/~209/ Week 2 Alaca & Vrbik (UTM)
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 informationMechatronics and Microcontrollers. Szilárd Aradi PhD Refresh of C
Mechatronics and Microcontrollers Szilárd Aradi PhD Refresh of C About the C programming language The C programming language is developed by Dennis M Ritchie in the beginning of the 70s One of the most
More informationME964 High Performance Computing for Engineering Applications
ME964 High Performance Computing for Engineering Applications Quick Overview of C Programming January 26, 2012 Dan Negrut, 2012 ME964 UW-Madison There is no reason for any individual to have a computer
More informationWhat have we learned about when we learned about function parameters? 1-1
What have we learned about when we learned about function parameters? 1-1 What have we learned about when we learned about function parameters? Call-by-Value also known as scalars (eg. int, double, char,
More informationFundamental of Programming (C)
Borrowed from lecturer notes by Omid Jafarinezhad Fundamental of Programming (C) Lecturer: Vahid Khodabakhshi Lecture 9 Pointer Department of Computer Engineering 1/46 Outline Defining and using Pointers
More informationFundamentals of Programming Session 20
Fundamentals of Programming Session 20 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2013 These slides have been created using Deitel s slides Sharif University of Technology Outlines
More informationA pointer is just a variable with its value being an address of another variable. It is similar to the concept of reference in Java.
Chapter 5 Pointers and Arrays A pointer is just a variable with its value being an address of another variable. It is similar to the concept of reference in Java. Pointers are used a lot in C programming
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 informationCharacter Strings. String-copy Example
Character Strings No operations for string as a unit A string is just an array of char terminated by the null character \0 The null character makes it easy for programs to detect the end char s[] = "0123456789";
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 informationProgramming in C++ 5. Integral data types
Programming in C++ 5. Integral data types! Introduction! Type int! Integer multiplication & division! Increment & decrement operators! Associativity & precedence of operators! Some common operators! Long
More informationIntermediate Programming, Spring 2017*
600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general
More informationPrinciples of C and Memory Management
COMP281 Lecture 9 Principles of C and Memory Management Dr Lei Shi Last Lecture Today Pointer to Array Pointer Arithmetic Pointer with Functions struct Storage classes typedef union String struct struct
More informationEastern Mediterranean University School of Computing and Technology Information Technology Lecture4 Pointers
Eastern Mediterranean University School of Computing and Technology Information Technology Lecture4 Pointers Pointers, Addresses and Dereferencing What is a pointer? What is a memory address? What does
More informationAt the end of this module, the student should be able to:
INTRODUCTION One feature of the C language which can t be found in some other languages is the ability to manipulate pointers. Simply stated, pointers are variables that store memory addresses. This is
More informationWeek 1 / Lecture 2 8 March 2017 NWEN 241 C Fundamentals. Alvin Valera. School of Engineering and Computer Science Victoria University of Wellington
Week 1 / Lecture 2 8 March 2017 NWEN 241 C Fundamentals Alvin Valera School of Engineering and Computer Science Victoria University of Wellington Admin stuff People Course Coordinator Lecturer Alvin Valera
More informationLecture07: Strings, Variable Scope, Memory Model 4/8/2013
Lecture07: Strings, Variable Scope, Memory Model 4/8/2013 Slides modified from Yin Lou, Cornell CS2022: Introduction to C 1 Outline Review pointers New: Strings New: Variable Scope (global vs. local variables)
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 informationPointers, Dynamic Data, and Reference Types
Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation The new operator The delete operator Dynamic Memory Allocation for Arrays 1 C++ Data Types simple
More informationBITG 1113: POINTER LECTURE 12
BITG 1113: POINTER LECTURE 12 1 LEARNING OUTCOMES At the end of this lecture, you should be able to: 1. Describe the concept of pointer. 2. Write declaration and initialization of a pointer. 3. Do arithmetic
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 informationLecture 3: C Programm
0 3 E CS 1 Lecture 3: C Programm ing Reading Quiz Note the intimidating red border! 2 A variable is: A. an area in memory that is reserved at run time to hold a value of particular type B. an area in memory
More informationTo declare an array in C, a programmer specifies the type of the elements and the number of elements required by an array as follows
Unti 4: C Arrays Arrays a kind of data structure that can store a fixed-size sequential collection of elements of the same type An array is used to store a collection of data, but it is often more useful
More informationPOINTERS. Pointer is a memory variable which can store address of an object of specified data type. For example:
POINTERS Pointer is a memory variable which can store address of an object of specified data type For example: #include int x=5; int *a;//here a is a pointer to int which can store address of
More informationSOFTWARE Ph.D. Qualifying Exam Fall 2017
(i) (4 pts.) SOFTWARE Ph.D. Qualifying Exam Fall 2017 Consider the following C program. #include #define START 2 #define LIMIT 60 #define STEP 7 #define SIZE 3 int main(void) { int i = START,
More informationArrays. An array is a collection of several elements of the same type. An array variable is declared as array name[size]
(November 10, 2009 2.1 ) Arrays An array is a collection of several elements of the same type. An array variable is declared as type array name[size] I The elements are numbered as 0, 1, 2... size-1 I
More information12. Pointers Address-of operator (&)
12. Pointers In earlier chapters, variables have been explained as locations in the computer's memory which can be accessed by their identifer (their name). This way, the program does not need to care
More information