# Contents of Lecture 3

Size: px
Start display at page:

Transcription

1 Contents of Lecture 3 Repetition of matrices double a[3][4]; double* b; double** c; Terminology Linkage Types Conversions Jonas Skeppstedt Lecture / 33

2 A global matrix: double a[3][4] Suppose we declare double a[3][4] as a global matrix. The compiler decides in which address the matrix will start. Since the matrix is global the address is a known number. address element a+0 a[0][0] a+8 a[0][1] a+16 a[0][2] a+24 a[0][3] a+32 a[1][0] a+40 a[1][1] a+48 a[1][2] a+56 a[1][3] a+64 a[2][0] a+72 a[2][1] a+80 a[2][2] a+88 a[2][3] Jonas Skeppstedt Lecture / 33

3 Accessing the global matrix We will now see what happens when we access the matrix. double a[3][4]; double* p; double x; To do x = a[i][j] the compiler will produce code for: // Find address of a [ i ] [ j ] : p = a + (i * 4 + j) * sizeof(double); // Read from memory: x = *p; Jonas Skeppstedt Lecture / 33

4 Creating a matrix with one call to calloc double* b; // 3 x 4 matrix double* p; double x; b = calloc(3 * 4, sizeof(double)); x = b[i * 4 + j]; Code for reading element (i, j): // Find address of b[ i 4 + j ] : p = b + (i * 4 + j) * sizeof(double); // Read from memory: x = *p; The differences are: The value of b comes from calloc. We must do i 4 ourselves. Jonas Skeppstedt Lecture / 33

5 Creating a matrix with m + 1 calls to calloc double** c; c = calloc(3, sizeof(double)); for (i = 0; i < 3; ++i) c[i] = calloc(4, sizeof(double)); x = c[i][j]; Jonas Skeppstedt Lecture / 33

6 Accessing the matrix To do x = c[i][j] the compiler will produce code for: double** p; double* q; double* r; double x; // Find address of c [ i ] ; p = c + i * sizeof(double*); // sizeof a pointer // Read address of row i : q = *p; // Find address of q[ j ], i. e. c [ i ] [ j ] : r = q + j * sizeof(double); // sizeof a double // Read from memory: x = *r; Jonas Skeppstedt Lecture / 33

7 Comments on free int* a; int* b; a = malloc(sizeof(int)); b = a; free(a); *a = 12; // wrong. a; // wrong. b; // wrong. After you have freed an object, any mention of that object is wrong, and the behavior is undefined. Anything is permitted to happen according to the C standard. Jonas Skeppstedt Lecture / 33

8 Iterating through a circular list #include <stddef.h> size_t length(list_t* head) { size_t count; list_t* p; } if (head == NULL) return 0; p = head; do { count += 1; p = p->succ; } while (p!= head); return count; Jonas Skeppstedt Lecture / 33

9 A comment on whether to use list_t or not We set the data pointer to an object which we want to put in a list. Now, why don t we just add the succ and pred variables to the object type directly? That would avoid the waste of allocating memory for the void* data. The answer is that if there is one obvious list that our objects should be put in, then that is a good idea, since it avoids calling malloc/free when dealing with lists. The list_t should be used when eg an object should be put in two lists at the same time. Another aspect is that it may be more convenient to waste that small amount of memory and just use the list_t type. Make your own priorities. Jonas Skeppstedt Lecture / 33

10 Strings in C Strings are adjacent characters terminated with a 0. C is fun is a string and consists of 9 bytes. Eg char v[10] can hold a string. Eg char* s can point to a string but it is no string. If we also do s = malloc(10); it is still no string. However, s points to memory which can hold a string. If we now do s = C is fun ; what will happen? The memory allocated by malloc is lost. Jonas Skeppstedt Lecture / 33

11 Copying a string To make a copy of a string, we can use the following function. char* copy_string(char* s) { int length; char* t; } length = strlen(s); t = malloc(length + 1); // why + 1??? strcpy(t, s); return t; Jonas Skeppstedt Lecture / 33

12 size_t strlen(const char* s); The type size_t is an unsigned integer of some suitable size, and const means this function promises not to modify what s points to. size_t strlen(const char* s) { size_t length = 0; while (*s!= 0) { } } return length; // have we reached the zero? length += 1; // one more char found. s += 1; // step to the next character. Jonas Skeppstedt Lecture / 33

13 A faster size_t strlen(const char* s); size_t strlen(const char* s) { char* s0 = s; while (*s!= 0) s += 1; return s - s0; // length i s difference in addresses } Jonas Skeppstedt Lecture / 33

14 Implementation An implementation refers to a C compiler and a C Standard Library. Implementation defined behavior is behavior not specified by the ISO C Standard, but rather by the implementation. Examples include the range of the different types. Whether signed shift is logical or arithmetic: int a; int b; b = a >> 2; // arithmetic in Java b = a >>> 2; // l o g i c a l in Java invalid C! The shifts above remove the two least significant bits. Logical shift copies in zeroes at the most significant position. Arithmetic shift copies in the value of the most significant bit. For a positive a we have a >> 3 == a / 8, due to 2 3 = 8. For a negative a see pages Jonas Skeppstedt Lecture / 33

15 Unspecified and undefined behavior The implementation must document how it deals with implementation defined behavior. For unspecified behavior the implementation is free to do as it wishes among a set of reasonable alternatives. For instance: the order of evaluation of parameters to a function the order of evaluation of operands of binary arithmetic operators (but not && and ). For undefined behavior anything may happen. For instance: Reading or writing through a null pointer. Overflow of signed integers. Divide by zero. Jonas Skeppstedt Lecture / 33

16 Character sets C99 uses implementation defined multibyte characters sequences and wide characters. C11 uses UTF-8 multibyte character sequences and wide characters with support for Unicode. A wide character is 16 or 32 bits wide and makes all characters this size which usually is a waste of space but makes processing easier. UTF-8 was invented by the person who invented UNIX and is an extension to ASCII Ken Thompson at Bell Labs. A non-ascii Unicode character such as Ö can be encoded by a few bytes in UTF-8. When using multibyte characters instead of wide characters only the non-ascii characters need multiple bytes. Jonas Skeppstedt Lecture / 33

17 Scopes of identifiers File scope Function scope only labels have function scope so label names must be unique in a function. void f(void) { L: goto L; } Function prototype scope don t declare new types in a prototype since the type will be useless elsewhere: void f(struct s { int a; } s); Block scope Jonas Skeppstedt Lecture / 33

18 Linkage of identifiers An identifier can have external, internal or no linkage. Linkage should not be confused with storage duration but is somewhat related. With linkage is meant that an identifier can be mentioned multiple times while refering to the same function or variable. A variable or function at file scope declared with static has internal linkage. Internal linkage is very useful to avoid conflicts between different files. You may want a function initialize in several C files. Declare them with static: static void initialize(void) { /... / } Without static there can only be one identifier initialize. Jonas Skeppstedt Lecture / 33

19 Identifiers with linkage can be declared multiple times Declaring the same identifier multiple times in the same file results only in one variable: int a; // external linkage. int a; // external linkage. extern int b; // external linkage. extern int b; // external linkage. static int c; // internal linkage. static int c; // internal linkage. An identifier with external linkage must be unique in the entire program. An identifier with internal linkage must be unique in the file. Jonas Skeppstedt Lecture / 33

20 Identifiers with no linkage At block scope only identifiers declared with extern have linkage. We get a compilation error if we redeclare an identifier at the same scope and without linkage: int a; int main(void) { int b; int b; // invalid. static int c; // no linkage. static int c; // no linkage and invalid. extern int a; // external linkage. } return 0; The a in main refers to the global variable. Jonas Skeppstedt Lecture / 33

21 Storage duration of objects By storage duration is meant the lifetime of an object. An object is some data such as a variable or an object allocated with malloc. Local variables on the stack have automatic storage duration and disappear when the function returns. All variables with linkage have static storage duration and exist from the beginning to the end of the program s execution. In C11 there is also thread storage duration for variables declared with _Thread_local (and possibly static or extern) and exist from the beginning to the end of the thread s execution. Data allocated from the heap has dynamic storage duration and exists until it is freed. C11 also introduced temporary lifetime which says that a returned value must exist for the duration of the full expression in which it was created for details see the book. Jonas Skeppstedt Lecture / 33

22 Types There are three main kinds of types: Function types Object types Incomplete object types typedef struct list_t extern int list_t; a[]; void is an incomplete object type which can never be completed. Except for void, incomplete object types can later be completed. Jonas Skeppstedt Lecture / 33

23 Object types The object types are divided into: Scalar types pointers and arithmetic types (i.e. numbers) Aggregate types arrays and structs Jonas Skeppstedt Lecture / 33

24 Compatible types The basic rules is that two types are compatible if they are the same type. We can only assign pointers to compatible types and the null pointer. In C++ we can write 0 for the null pointer but in C we must use NULL (since there are machine which use a different value for the null pointer). char* cp; signed char* sp; unsigned char* up; unsigned int* p; p = NULL; p = up; cp = sp; cp = up; What about structs? // valid // invalid // invalid // invalid Jonas Skeppstedt Lecture / 33

25 Compatibility of different structs Recall a translation unit is a C file being compiled with all its included files. C uses name equivalence for structs declared in the same translation unit. The two structs below are not compatible types. struct s { int a, b; } *p, *q; struct t { int a, b; } *r; p = q; // valid : pointers to the same type. r = p; // invalid : pointers to different types. C uses structural equivalence for structs declared in different translation units, for which two different declarations of the same struct are compatible despite being in different translation units. Jonas Skeppstedt Lecture / 33

26 Casts A cast is an explicit type conversion, which sometimes are needed. For instance, if we want to copy the value of a pointer to an integer, we use the type intptr_t and convert the pointer using a cast: #include <stdint.h> intptr_t a; int b; void* p; a = (intptr_t)p; // converts a pointer to an in te ger type. b = (int)p; // wrong type : may not work. This is one of the rare cases we should use a cast. We will see later why we might want to do this. When we use casts with pointers we are playing with dangerous tools. Jonas Skeppstedt Lecture / 33

27 Type aliasing and the ANSI C Aliasing Rules struct s { int a, b; } *p, *q; struct t { int a, b; } *r; int x; r->a = 1; p = (struct s*)r; p->a = 2; x = r->a; // x may become 1. To help compilers optimize C code, they are allowed to assume that pointers to incompatible types cannot point to the same data. Exceptions to this rule are if one of the types is a pointer to void, pointer to a char type, or the same integer type but with different sign. The last is called corresponding integer types. Jonas Skeppstedt Lecture / 33

28 Corresponding integer types Integer types which only differ in sign are called corresponding integer types: signed int* p; unsigned int* q; int x; *q = 1; p = (signed int*)q; *p = 2; x = *q; // x must become 2. Jonas Skeppstedt Lecture / 33

29 Integer promotions For integer types smaller than an int, operands of arithmetic operators and function call arguments are converted to an int or unsigned int (if an int cannot hold all values of the original type). Consider: unsigned char a = 1; unsigned char b = 2; unsigned char c; c = a + b; Each of a and b is converted to an int before adding and then the result is converted to an unsigned char in the assignment. This means that: sizeof a < sizeof +a sizeof(unsigned char) < sizeof(int) We will see some effects of this next... Jonas Skeppstedt Lecture / 33

30 Hex numbers and the bitwise complement operator A number on base 16 is called a hex number and is written with 0x as a prefix: unsigned char a = 0xf0; This stores in a (assuming it is 8 bits wide). The ~ operator changes each 1 to 0 and 0 to 1 (called bitwise complement) of the promoted operand: unsigned char a = 0xf0; printf("%x\n", ~a); Assuming a 32-bit int, how many f does it print? Jonas Skeppstedt Lecture / 33

31 Answer First is promoted to become: i.e. 24 leading zeroes. Bitwise complement results in Printing this as a hex number results in ffffff0f. i.e. seven f. Jonas Skeppstedt Lecture / 33

32 Another quiz Assume 255 is the largest value of an unsigned char. What does the following print? unsigned char a; int b; a = 255; b = a + 1; printf("%d\n", b); Jonas Skeppstedt Lecture / 33

33 Answer The a is promoted to an int and 1 is added to 255 so the output becomes 256. However, if we then do: a = b; printf("%u\n", a); The output will be 0. Assume an unsigned integer type is n bits wide. In the conversion at the assignment, the value stored in an unsigned integer always is x mod 2 n, where x is the value of the expression. For signed integers, if the value cannot be represented it is implementation defined what happens but usually as many bits of the expression that fits are stored. There is no overflow at a conversion they can occur in expressions and will be discussed in Lecture 5. Jonas Skeppstedt Lecture / 33

### Contents Lecture 3. C Preprocessor, Chapter 11 Declarations, Chapter 8. Jonas Skeppstedt Lecture / 44

Contents Lecture 3 C Preprocessor, Chapter 11 Declarations, Chapter 8 Jonas Skeppstedt (js@cs.lth.se) Lecture 3 2014 1 / 44 C Preprocessor Predefined macros Macro replacement Conditional inclusion Source

### C Programming. Course Outline. C Programming. Code: MBD101. Duration: 10 Hours. Prerequisites:

C Programming Code: MBD101 Duration: 10 Hours Prerequisites: You are a computer science Professional/ graduate student You can execute Linux/UNIX commands You know how to use a text-editing tool You should

### Review of the C Programming Language for Principles of Operating Systems

Review of the C Programming Language for Principles of Operating Systems Prof. James L. Frankel Harvard University Version of 7:26 PM 4-Sep-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights

### CSC 1600 Memory Layout for Unix Processes"

CSC 16 Memory Layout for Unix Processes" 1 Lecture Goals" Behind the scenes of running a program" Code, executable, and process" Memory layout for UNIX processes, and relationship to C" : code and constant

### Dynamic Data Structures. CSCI 112: Programming in C

Dynamic Data Structures CSCI 112: Programming in C 1 It s all about flexibility In the programs we ve made so far, the compiler knows at compile time exactly how much memory to allocate for each variable

### Review of the C Programming Language

Review of the C Programming Language Prof. James L. Frankel Harvard University Version of 11:55 AM 22-Apr-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights reserved. Reference Manual for the

### Declaring Pointers. Declaration of pointers <type> *variable <type> *variable = initial-value Examples:

1 Programming in C Pointer Variable A variable that stores a memory address Allows C programs to simulate call-by-reference Allows a programmer to create and manipulate dynamic data structures Must be

### CIS 2107 Computer Systems and Low-Level Programming Fall 2011 Midterm

Fall 2011 Name: Page Points Score 1 5 2 10 3 10 4 7 5 8 6 15 7 4 8 7 9 16 10 18 Total: 100 Instructions The exam is closed book, closed notes. You may not use a calculator, cell phone, etc. For each of

### Lecture Notes on Types in C

Lecture Notes on Types in C 15-122: Principles of Imperative Computation Frank Pfenning, Rob Simmons Lecture 20 April 2, 2013 1 Introduction In lecture 18, we emphasized the things we lost by going to

### Type Checking. Prof. James L. Frankel Harvard University

Type Checking Prof. James L. Frankel Harvard University Version of 7:10 PM 27-Feb-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights reserved. C Types C Types Type Category Type Category Type

### QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below:

QUIZ 1. Explain the meaning of the angle brackets in the declaration of v below: This is a template, used for generic programming! QUIZ 2. Why is the vector class called a container? 3. Explain how the

### A 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

### CS 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

### CPSC 3740 Programming Languages University of Lethbridge. Data Types

Data Types A data type defines a collection of data values and a set of predefined operations on those values Some languages allow user to define additional types Useful for error detection through type

### Fall 2018 Discussion 2: September 3, 2018

CS 61C C Basics Fall 2018 Discussion 2: September 3, 2018 1 C C is syntactically similar to Java, but there are a few key differences: 1. C is function-oriented, not object-oriented; there are no objects.

### Administrivia. 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

### CSCI 171 Chapter Outlines

Contents CSCI 171 Chapter 1 Overview... 2 CSCI 171 Chapter 2 Programming Components... 3 CSCI 171 Chapter 3 (Sections 1 4) Selection Structures... 5 CSCI 171 Chapter 3 (Sections 5 & 6) Iteration Structures

### In Java we have the keyword null, which is the value of an uninitialized reference type

+ More on Pointers + Null pointers In Java we have the keyword null, which is the value of an uninitialized reference type In C we sometimes use NULL, but its just a macro for the integer 0 Pointers are

### DAY 3. CS3600, Northeastern University. Alan Mislove

C BOOTCAMP DAY 3 CS3600, Northeastern University Slides adapted from Anandha Gopalan s CS132 course at Univ. of Pittsburgh and Pascal Meunier s course at Purdue Memory management 2 Memory management Two

### Arrays 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

### Dynamic 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,

### Quiz 0 Review Session. October 13th, 2014

Quiz 0 Review Session October 13th, 2014 Topics (non-exhaustive) Binary. ASCII. Algorithms. Pseudocode. Source code. Compiler. Object code. Scratch. Statements. Boolean expressions. Conditions. Loops.

### IMPORTANT QUESTIONS IN C FOR THE INTERVIEW

IMPORTANT QUESTIONS IN C FOR THE INTERVIEW 1. What is a header file? Header file is a simple text file which contains prototypes of all in-built functions, predefined variables and symbolic constants.

### Memory, 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

### 11 'e' 'x' 'e' 'm' 'p' 'l' 'i' 'f' 'i' 'e' 'd' bool equal(const unsigned char pstr[], const char *cstr) {

This document contains the questions and solutions to the CS107 midterm given in Spring 2016 by instructors Julie Zelenski and Michael Chang. This was an 80-minute exam. Midterm questions Problem 1: C-strings

### Chapter 2 (Dynamic variable (i.e. pointer), Static variable)

Chapter 2 (Dynamic variable (i.e. pointer), Static variable) August_04 A2. Identify and explain the error in the program below. [4] #include int *pptr; void fun1() { int num; num=25; pptr= &num;

### Chapter 7. Basic Types

Chapter 7 Basic Types Dr. D. J. Jackson Lecture 7-1 Basic Types C s basic (built-in) types: Integer types, including long integers, short integers, and unsigned integers Floating types (float, double,

### Do not start the test until instructed to do so!

Instructions: Print your name in the space provided below. This examination is closed book and closed notes, aside from the permitted one-page formula sheet. No calculators or other electronic devices

### o Code, executable, and process o Main memory vs. virtual memory

Goals for Today s Lecture Memory Allocation Prof. David August COS 217 Behind the scenes of running a program o Code, executable, and process o Main memory vs. virtual memory Memory layout for UNIX processes,

### Malloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016

Malloc Lab & Midterm Solutions Recitation 11: Tuesday: 11/08/2016 Malloc 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than

### But first, encode deck of cards. Integer Representation. Two possible representations. Two better representations WELLESLEY CS 240 9/8/15

Integer Representation Representation of integers: unsigned and signed Sign extension Arithmetic and shifting Casting But first, encode deck of cards. cards in suits How do we encode suits, face cards?

### THE FUNDAMENTAL DATA TYPES

THE FUNDAMENTAL DATA TYPES Declarations, Expressions, and Assignments Variables and constants are the objects that a prog. manipulates. All variables must be declared before they can be used. #include

### Announcements. 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

### At this time we have all the pieces necessary to allocate memory for an array dynamically. Following our example, we allocate N integers as follows:

Pointers and Arrays Part II We will continue with our discussion on the relationship between pointers and arrays, and in particular, discuss how arrays with dynamical length can be created at run-time

### Hacking in C. Pointers. Radboud University, Nijmegen, The Netherlands. Spring 2019

Hacking in C Pointers Radboud University, Nijmegen, The Netherlands Spring 2019 Allocation of multiple variables Consider the program main(){ char x; int i; short s; char y;... } What will the layout of

### CS Programming In C

CS 24000 - Programming In C Week Two: Basic C Program Organization and Data Types Zhiyuan Li Department of Computer Science Purdue University, USA 2 int main() { } return 0; The Simplest C Program C programs

### Goals 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

### CS107, Lecture 3 Bits and Bytes; Bitwise Operators

CS107, Lecture 3 Bits and Bytes; Bitwise Operators reading: Bryant & O Hallaron, Ch. 2.1 This document is copyright (C) Stanford Computer Science and Nick Troccoli, licensed under Creative Commons Attribution

### C Structures & Dynamic Memory Management

C Structures & Dynamic Memory Management Goals of this Lecture Help you learn about: Structures and unions Dynamic memory management Note: Will be covered in precepts as well We look at them in more detail

### Class 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

### MPATE-GE 2618: C Programming for Music Technology. Syllabus

MPATE-GE 2618: C Programming for Music Technology Instructor Dr. Schuyler Quackenbush schuyler.quackenbush@nyu.edu Lab Teaching Assistant TBD Description Syllabus MPATE-GE 2618: C Programming for Music

### CS11001/CS11002 Programming and Data Structures (PDS) (Theory: 3-1-0) Allocating Space

CS11001/CS11002 Programming and Data Structures (PDS) (Theory: 3-1-0) Allocating Space Dynamic Memory Allocation All variables, arrays, structures and unions that we worked with so far are statically allocated,

### Arrays 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

### LESSON 5 FUNDAMENTAL DATA TYPES. char short int long unsigned char unsigned short unsigned unsigned long

LESSON 5 ARITHMETIC DATA PROCESSING The arithmetic data types are the fundamental data types of the C language. They are called "arithmetic" because operations such as addition and multiplication can be

### CS 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

### Computer Organization & Systems Exam I Example Questions

Computer Organization & Systems Exam I Example Questions 1. Pointer Question. Write a function char *circle(char *str) that receives a character pointer (which points to an array that is in standard C

### Programming 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

### Programming in C and C++

Programming in C and C++ Types, Variables, Expressions and Statements Neel Krishnaswami and Alan Mycroft Course Structure Basics of C: Types, variables, expressions and statements Functions, compilation

### Zheng-Liang Lu Java Programming 45 / 79

1 class Lecture2 { 2 3 "Elementray Programming" 4 5 } 6 7 / References 8 [1] Ch. 2 in YDL 9 [2] Ch. 2 and 3 in Sharan 10 [3] Ch. 2 in HS 11 / Zheng-Liang Lu Java Programming 45 / 79 Example Given a radius

### EL2310 Scientific Programming

Lecture 11: Structures and Memory (yaseminb@kth.se) Overview Overview Lecture 11: Structures and Memory Structures Continued Memory Allocation Lecture 11: Structures and Memory Structures Continued Memory

### Princeton University Computer Science 217: Introduction to Programming Systems The C Programming Language Part 1

Princeton University Computer Science 217: Introduction to Programming Systems The C Programming Language Part 1 C is quirky, flawed, and an enormous success. While accidents of history surely helped,

### TYPES, VALUES AND DECLARATIONS

COSC 2P90 TYPES, VALUES AND DECLARATIONS (c) S. Thompson, M. Winters 1 Names, References, Values & Types data items have a value and a type type determines set of operations variables Have an identifier

### Lecture 8 Dynamic Memory Allocation

Lecture 8 Dynamic Memory Allocation CS240 1 Memory Computer programs manipulate an abstraction of the computer s memory subsystem Memory: on the hardware side 3 @ http://computer.howstuffworks.com/computer-memory.htm/printable

### Computer 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

### Declaration. Fundamental Data Types. Modifying the Basic Types. Basic Data Types. All variables must be declared before being used.

Declaration Fundamental Data Types All variables must be declared before being used. Tells compiler to set aside an appropriate amount of space in memory to hold a value. Enables the compiler to perform

### C Introduction. Comparison w/ Java, Memory Model, and Pointers

CS 261 Fall 2018 Mike Lam, Professor C Introduction Comparison w/ Java, Memory Model, and Pointers Please go to socrative.com on your phone or laptop, choose student login and join room LAMJMU The C Language

### 5.Coding for 64-Bit Programs

Chapter 5 5.Coding for 64-Bit Programs This chapter provides information about ways to write/update your code so that you can take advantage of the Silicon Graphics implementation of the IRIX 64-bit operating

### advanced data types (2) typedef. today advanced data types (3) enum. mon 23 sep 2002 defining your own types using typedef

today advanced data types (1) typedef. mon 23 sep 2002 homework #1 due today homework #2 out today quiz #1 next class 30-45 minutes long one page of notes topics: C advanced data types dynamic memory allocation

### ECE 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

### Layers of Abstraction. CS 3330: More C. printf. Last time

Layers of Abstraction CS 3330: More C 30 August 2016 x += y add %rbx, %rax 60 03 Higher-level language: C Assembly: X86-64 Machine code: Y86 (we ll talk later) Logic and Registers 1 2 Last time printf

### CIS 2107 Computer Systems and Low-Level Programming Fall 2011 Midterm Solutions

Fall 2011 Name: Page Points Score 1 7 2 10 3 8 4 13 6 17 7 4 8 16 9 15 10 10 Total: 100 Instructions The exam is closed book, closed notes. You may not use a calculator, cell phone, etc. For each of the

### Short Notes of CS201

#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

### CS107, Lecture 3 Bits and Bytes; Bitwise Operators

CS107, Lecture 3 Bits and Bytes; Bitwise Operators reading: Bryant & O Hallaron, Ch. 2.1 This document is copyright (C) Stanford Computer Science and Nick Troccoli, licensed under Creative Commons Attribution

### CS61, 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

### String constants. /* Demo: string constant */ #include <stdio.h> int main() {

Strings 1 String constants 2 /* Demo: string constant */ #include s1.c int main() { printf("hi\n"); } String constants are in double quotes A backslash \ is used to include 'special' characters,

### Chapter 3. Fundamental Data Types

Chapter 3. Fundamental Data Types Byoung-Tak Zhang TA: Hanock Kwak Biointelligence Laboratory School of Computer Science and Engineering Seoul National Univertisy http://bi.snu.ac.kr Variable Declaration

### CS 61C: Great Ideas in Computer Architecture. (Brief) Review Lecture

CS 61C: Great Ideas in Computer Architecture (Brief) Review Lecture Instructor: Justin Hsia 7/16/2013 Summer 2013 Lecture #13 1 Topic List So Far (1/2) Number Representation Signed/unsigned, Floating Point

### C Programming Basics II

C Programming Basics II Xianyi Zeng xzeng@utep.edu Department of Mathematical Sciences The University of Texas at El Paso. September 20, 2016. Pointers and Passing by Address Upon declaring a variable,

### Pointers (continued), arrays and strings

Pointers (continued), arrays and strings 1 Last week We have seen pointers, e.g. of type char *p with the operators * and & These are tricky to understand, unless you draw pictures 2 Pointer arithmetic

### CSE 333 Lecture 2 Memory

CSE 333 Lecture 2 Memory John Zahorjan Department of Computer Science & Engineering University of Washington Today s goals - some terminology - review of memory resources - reserving memory - type checking

### Dynamic Memory. Dynamic Memory Allocation Strings. September 18, 2017 Hassan Khosravi / Geoffrey Tien 1

Dynamic Memory Dynamic Memory Allocation Strings September 18, 2017 Hassan Khosravi / Geoffrey Tien 1 Pointer arithmetic If we know the address of the first element of an array, we can compute the addresses

### CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

### CS113: Lecture 9. Topics: Dynamic Allocation. Dynamic Data Structures

CS113: Lecture 9 Topics: Dynamic Allocation Dynamic Data Structures 1 What s wrong with this? char *big_array( char fill ) { char a[1000]; int i; for( i = 0; i < 1000; i++ ) a[i] = fill; return a; void

### Lectures 13 & 14. memory management

Lectures 13 & 14 Linked lists and memory management Courtesy of Prof. Garcia (UCB) CS61C L05 Introduction to C (pt 3) (1) Review Pointers and arrays are virtually same C knows how to increment pointers

### CSC 270 Survey of Programming Languages. What is a Pointer?

CSC 270 Survey of Programming Languages C Lecture 6 Pointers and Dynamic Arrays What is a Pointer? A pointer is the address in memory of a variable. We call it a pointer because we envision the address

### MPATE-GE 2618: C Programming for Music Technology. Unit 5.1

MPATE-GE 2618: C Programming for Music Technology Unit 5.1 Review: automatic vs. static variables Variables declared and passed to functions are automatic variables. As soon as you leave the function,

### APS105. Malloc and 2D Arrays. Textbook Chapters 6.4, Datatype Size

APS105 Malloc and 2D Arrays Textbook Chapters 6.4, 10.2 Datatype Size Datatypes have varying size: char: 1B int: 4B double: 8B int sizeof(): a builtin function that returns size of a type int x =

### Structure of this course. C and C++ Past Exam Questions. Text books

Structure of this course C and C++ 1. Types Variables Expressions & Statements Alastair R. Beresford University of Cambridge Lent Term 2008 Programming in C: types, variables, expressions & statements

### Pointers (continued), arrays and strings

Pointers (continued), arrays and strings 1 Last week We have seen pointers, e.g. of type char *p with the operators * and & These are tricky to understand, unless you draw pictures 2 Pointer arithmetic

### Character 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";

### Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and

Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and #include The Use of printf() and scanf() The Use of printf()

### INITIALISING POINTER VARIABLES; DYNAMIC VARIABLES; OPERATIONS ON POINTERS

INITIALISING POINTER VARIABLES; DYNAMIC VARIABLES; OPERATIONS ON POINTERS Pages 792 to 800 Anna Rakitianskaia, University of Pretoria INITIALISING POINTER VARIABLES Pointer variables are declared by putting

### Recitation #11 Malloc Lab. November 7th, 2017

18-600 Recitation #11 Malloc Lab November 7th, 2017 1 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than 32 bit Encourages

### A Fast Review of C Essentials Part I

A Fast Review of C Essentials Part I Structural Programming by Z. Cihan TAYSI Outline Program development C Essentials Functions Variables & constants Names Formatting Comments Preprocessor Data types

### P.G.TRB - COMPUTER SCIENCE. c) data processing language d) none of the above

P.G.TRB - COMPUTER SCIENCE Total Marks : 50 Time : 30 Minutes 1. C was primarily developed as a a)systems programming language b) general purpose language c) data processing language d) none of the above

### edunepal_info

facebook.com/edunepal.info @ edunepal_info C interview questions (1 125) C interview questions are given with the answers in this website. We have given C interview questions faced by freshers and experienced

### Midterm Sample Questions. a) What evaluates to FALSE in C? What evaluates to TRUE?

Midterm Syllabus: 1. Number systems a. Signed and unsigned representations b. Conversion between different representations c. Overflow condition 2. C Pointers 3. Dynamic Memory Allocation 4. C Data structures:

### Internal representation. Bitwise operators

Computer Programming Internal representation. Bitwise operators Marius Minea marius@cs.upt.ro 23 October 2017 Ideal math and C are not the same! In mathematics: integers Z and reals R have unbounded values

### Final Exam. 11 May 2018, 120 minutes, 26 questions, 100 points

Name: CS520 Final Exam 11 May 2018, 120 minutes, 26 questions, 100 points The exam is closed book and notes. Please keep all electronic devices turned off and out of reach. Note that a question may require

### Internal representation. Bitwise operators

Computer Programming Internal representation. Bitwise operators Marius Minea marius@cs.upt.ro 24 October 2016 Ideal math and C are not the same! In mathematics: integers Z and reals R have unbounded values

### Procedural programming with C

Procedural programming with C Dr. C. Constantinides Department of Computer Science and Software Engineering Concordia University Montreal, Canada August 11, 2016 1 / 77 Functions Similarly to its mathematical

### CODE TIME TECHNOLOGIES. Abassi RTOS MISRA-C:2004. Compliance Report

CODE TIME TECHNOLOGIES Abassi RTOS MISRA-C:2004 Compliance Report Copyright Information This document is copyright Code Time Technologies Inc. 2012. All rights reserved. No part of this document may be

>B

### CS 314 Principles of Programming Languages. Lecture 11

CS 314 Principles of Programming Languages Lecture 11 Zheng Zhang Department of Computer Science Rutgers University Wednesday 12 th October, 2016 Zheng Zhang 1 eddy.zhengzhang@cs.rutgers.edu Class Information

### The New C Standard (Excerpted material)

The New C Standard (Excerpted material) An Economic and Cultural Derek M. Jones derek@knosof.co.uk Copyright 2002-2008 Derek M. Jones. All rights reserved. 1566 6.7.5.2 Array declarators 6.7.5.2 Array

### Why 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

### 2/12/17. Goals of this Lecture. Historical context Princeton University Computer Science 217: Introduction to Programming Systems

Princeton University Computer Science 217: Introduction to Programming Systems The C Programming Language Part 1 For Your Amusement C is quirky, flawed, and an enormous success. While accidents of history

### CS61C : Machine Structures

inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture #4 C Memory Management 2007-06-28 Scott Beamer, Instructor iphone Comes out Tomorrow CS61C L4 C Memory Management (1) www.apple.com/iphone