Systems Programming Concepts

Slides:



Advertisements
Similar presentations
1 Pointers and Strings Section 5.4, , Lecture 12.
Advertisements

Programming and Data Structure
BBS514 Structured Programming (Yapısal Programlama)1 Pointers.
C Pointers Systems Programming Concepts. PointersPointers  Pointers and Addresses  Pointers  Using Pointers in Call by Reference  Swap – A Pointer.
Pointers and Strings. Introduction Pointers –Powerful, but difficult to master –Simulate call-by-reference –Close relationship with arrays and strings.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 7 - Pointers Outline 7.1Introduction 7.2Pointer.
Lesson 6 - Pointers Outline Introduction Pointer Variable Declarations and Initialization Pointer Operators Calling Functions by Reference Using the const.
C Pointers Systems Programming. Systems Programming: Pointers 2 Systems Programming: 2 PointersPointers  Pointers and Addresses  Pointers  Using Pointers.
 2000 Prentice Hall, Inc. All rights reserved. Chapter 7 - Pointers Outline 7.1Introduction 7.2Pointer Variable Declarations and Initialization 7.3Pointer.
Pointers Ethan Cerami Fundamentals of Computer New York University.
 2007 Pearson Education, Inc. All rights reserved C Pointers.
Lecture 7 C Pointers Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education Inc.
Engineering H192 - Computer Programming The Ohio State University Gateway Engineering Education Coalition Lect 14P. 1Winter Quarter Pointers Lecture 14.
FunctionsFunctions Systems Programming Concepts. Functions   Simple Function Example   Function Prototype and Declaration   Math Library Functions.
Pointers CSE 2451 Rong Shi.
Engineering H192 - Computer Programming Gateway Engineering Education Coalition Lect 14P. 1Winter Quarter Pointers Lecture 14.
CSEB114: PRINCIPLE OF PROGRAMMING Chapter 8: Arrays.
 2007 Pearson Education, Inc. All rights reserved C Pointers.
C++ How to Program, 8/e © by Pearson Education, Inc. All Rights Reserved.
 2003 Prentice Hall, Inc. All rights reserved Introduction Pointers –Powerful, but difficult to master –Simulate pass-by-reference –Close relationship.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Pointers.
Pointers: Basics. 2 What is a pointer? First of all, it is a variable, just like other variables you studied  So it has type, storage etc. Difference:
 2007 Pearson Education, Inc. All rights reserved. 1 C Pointers Chapter 7 from “C How to Program" Another ref:
Spring 2005, Gülcihan Özdemir Dağ Lecture 6, Page 1 BIL104E: Introduction to Scientific and Engineering Computing, Spring Lecture 6 Outline 6.1Introduction.
C++ Programming Lecture 17 Pointers – Part I The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 7 - Pointers Outline 7.1Introduction 7.2Pointer.
 2003 Prentice Hall, Inc. All rights reserved. 1 Pointers and Strings Outline Introduction Pointer Variable Declarations and Initialization Pointer Operators.
+ Pointers. + Content Address of operator (&) Pointers Pointers and array.
Pointers PART - 2. Pointers Pointers are variables that contain memory addresses as their values. A variable name directly references a value. A pointer.
1 2/2/05CS250 Introduction to Computer Science II Pointers.
1. Pointers –Powerful, but difficult to master –Simulate pass-by-reference –Close relationship with arrays and strings 2.
 2003 Prentice Hall, Inc. All rights reserved. 1 Lecture 5: Pointer Outline Chapter 5 Pointer continue Call by reference Pointer arithmatic Debugging.
Pointers in C by Dr P.Padmanabham Professor (CSE)&Director Bharat Institute of Engineering &Technology Hyderabad Mobile
FUNCTIONS (CONT). Midterm questions (21-30) 21. The underscore can be used anywhere in an identifier. 22. The keyword void is a data type in C. 23. Floating.
Chapter 7 Pointers Associate Prof. Yuh-Shyan Chen Dept. of Computer Science and Information Engineering National Chung-Cheng University.
ECE 103 Engineering Programming Chapter 30 C Functions Herbert G. Mayer, PSU CS Status 8/9/2014 Initial content copied verbatim from ECE 103 material developed.
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI CSCI N305 Pointers Call-by-Reference.
C LANGUAGE UNIT 3. UNIT 3 Arrays Arrays – The concept of array – Defining arrays – Initializing arrays.
Computer Organization and Design Pointers, Arrays and Strings in C
UNIT 5 C Pointers.
© 2016 Pearson Education, Ltd. All rights reserved.
Chapter 7 - Pointers Outline 7.1 Introduction
EPSII 59:006 Spring 2004.
Chapter 7 - Pointers Outline 7.1 Introduction
Pointers in C.
Chapter 7 - Pointers Outline 7.1 Introduction
Pointers and Pointer-Based Strings
INC 161 , CPE 100 Computer Programming
Chapter 7 - Pointers Outline 7.1 Introduction
CSC113: Computer Programming (Theory = 03, Lab = 01)
Pointer.
Chapter 7 from “C How to Program"
INC 161 , CPE 100 Computer Programming
Pointers in C Good morning Ladies and Gentlemen. Welcome to this talk on “Pointers in C”
C Arrays Systems Programming.
Pointers  Week 10.
Pointers Problem Solving & Program Design in C Eighth Edition
Pointers Call-by-Reference CSCI 230
Pointers Kingdom of Saudi Arabia
5.1 Introduction Pointers Powerful, but difficult to master
7 C Pointers.
Pointers Pointers are variables that contain memory addresses as their values. A variable name refers to a specific value. A pointer contains an address.
EENG212 ALGORITHMS & DATA STRUCTURES
C++ Programming Lecture 17 Pointers – Part I
Pointers and Pointer-Based Strings
Chapter 9: Pointers and String
CISC181 Introduction to Computer Science Dr
C Pointers Systems Programming.
C Parameter Passing.
Presentation transcript:

Systems Programming Concepts C Pointers Systems Programming Concepts

Systems Programming Pointers Pointers and Addresses Pointers Using Pointers in Call by Reference Swap – A Pointer Example Pointers and Arrays Operator Precedence Example Systems Programming Pointers

Systems Programming Pointers Variables Variable names correspond to memory locations in memory. Every variable has a type, a name and a value. int i; i i = 4; 32212242 (the address of i ) &i 4 Systems Programming Pointers

Systems Programming Pointers Print an Address int main () { int i; i = 4; printf(‘i = %d, address of i = %u\n”, i, &i); return 0; } $./ptr1 i = 4, address of i = 3220392980 Systems Programming Pointers

Systems Programming Pointers What is a pointer? a variable that contains a memory address as its value. Pointers contain the address of a variable that has a specific value (an indirect reference). Pointers in C are typed. a pointer to a variable of type int a pointer to a variable of type char a pointer to a defined type or an object.  2007 Pearson Ed -All rights reserved. Systems Programming Pointers

Fig. 7.1 Directly and Indirectly Referencing a Variable  2007 Pearson Ed -All rights reserved. Systems Programming Pointers

Systems Programming Pointers /* Welcome to the world of Pointers! Pointers are a powerful tool */ int main () { int i; int *ptr; /* pointer declaration */ i = 4; ptr = &i; printf(" i = %d\n address of i = %u\n address of pointer = %u\n", i, ptr, &ptr); return 0; } ./ptr2 i = 4 address of i = 3219352564 address of pointer = 3219352560 Systems Programming Pointers

Systems Programming Pointers /* Do you think in Hex ?*/ int main () { int i; int *ptr; i = 4; ptr = &i; printf(" i = %d\n address of i = %p\n address of pointer = %p\n", i, ptr, &ptr); return 0; } ptr bfe07240 bfe07244 bfe07244 4 i ./ptr3 i = 4 address of i = 0xbfe07244 address of pointer = 0xbfe07240 Systems Programming Pointers

Systems Programming Pointers /* Never trust a Compiler. */ int j, i; /* think globally! */ int *ptr1, *ptr2; void printit () { printf(" i = %2d, ptr1 = %p\n", i, ptr1); printf(" j = %2d, ptr2 = %p\n", j, ptr2); } int main () i = 4; j = 8; ptr1 = &i; ptr2 = &j; printit (); *ptr2 = *ptr2 + 1; ptr1 = ptr1 - 2; /* You cannot know this */ i = 6; *ptr1 = *ptr1 + 10; return 0; 8049654 ptr1 ptr2 804964c j 19 8 9 The unary (or indirection) operator returns the value of the object to which its operand points. i 4 6 ./ptr4 i = 4, ptr1 = 0x8049654 j = 8, ptr2 = 0x804964c i = 4, ptr1 = 0x804964c j = 9, ptr2 = 0x804964c i = 6, ptr1 = 0x804964c j = 19, ptr2 = 0x804964c Systems Programming Pointers

7.4 Passing Arguments to Functions by Reference All arguments in C are passed by value!! Call by reference is done with pointer arguments. Pass address of argument using & (address operator). Allows you to change the value of the variable in the caller. Arrays are not passed with & because the array name is already a pointer. * indirection operator Used as alias/nickname for variable inside of function void double( int *number ) { *number = 2 * ( *number ); } *number used as nickname for the variable passed.  2007 Pearson Ed -All rights reserved. Systems Programming Pointers

Using Pointers in Call by Reference Systems Programming Pointers  2007 Pearson Ed -All rights reserved. Function prototype takes a pointer argument Function cubeByReference is passed an address, which can be the value of a pointer variable. In this program, *nPtr is number, so this statement modifies the value of number itself. Systems Programming Pointers

Swap: A Pointer Example /* A simple memory swap using pointers */ void swap (int *i, int *j) { int temp; temp = *i; *i = *j; *j = temp; } Systems Programming Pointers

Swap: A Pointer Example int main ( ) { int i; int mem1; int mem2; int ray1[4]; mem1 = 12; mem2 = 81; swap (&mem1, &mem2); /* swap two integers */ printf("mem1:%4d mem2:%4d\n", mem1, mem2); for (i = 0; i < 4; i++) ray1[i] = 10*i; printf("ray1[%d] =%4d ", i, ray1[i]); } printf("\n"); ./swap mem1: 81 mem2: 12 ray1[0] = 0 ray1[1] = 10 ray1[2] = 20 ray1[3] = 30 Systems Programming Pointers

Swap: A Pointer Example swap (&mem1, &ray1[3]); swap (&mem2, &ray1[2]); printf("mem1:%4d mem2:%4d\n", mem1, mem2); for (i = 0; i < 4; i++) printf("ray1[%d] =%4d ", i, ray1[i]); printf("\n"); return 0; } mem1: 30 mem2: 20 ray1[0] = 0 ray1[1] = 10 ray1[2] = 12 ray1[3] = 81 Systems Programming Pointers

Systems Programming Pointers Pointers and Arrays r 1 1 1 r[0] r[1] r[2] r[3] r[4] r[5] int main () { int i, r[6] ={1,1,1}; int *ptr; ptr = r; *ptr = 83; *(ptr +2) = 33; for (i=0; i < 6; i++) printf (" r[%d] = %d\n", i, r[i]); ptr Systems Programming Pointers

Systems Programming Pointers Pointers and Arrays r 83 1 33 r[0] r[1] r[2] r[3] r[4] r[5] r[4] = *ptr; ptr++; *ptr = 6; *(ptr +2) = 7; for (i=0; i < 6; i++) printf (" r[%d] = %d\n", i, r[i]); return 0; } ptr Systems Programming Pointers

Systems Programming Pointers Pointers and Arrays r 83 1 33 83 r[0] r[1] r[2] r[3] r[4] r[5] r[4] = *ptr; ptr++; *ptr = 6; *(ptr +2) = 7; for (i=0; i < 6; i++) printf (" r[%d] = %d\n", i, r[i]); return 0; } ptr Systems Programming Pointers

Systems Programming Pointers Pointers and Arrays r 83 6 33 7 83 r[0] r[1] r[2] r[3] r[4] r[5] r[4] = *ptr; ptr++; *ptr = 6; *(ptr +2) = 7; for (i=0; i < 6; i++) printf (" r[%d] = %d\n", i, r[i]); return 0; } ptr Systems Programming Pointers

Operator Precedence Example /* An example of operator precedence trouble */ int main () { float x,y,z; float *ptr1, *ptr2, *ptr3; x =2.0; y = 8.0; z = 4.0; ptr1 = &x; ptr2 = &y; ptr3 = &z; printf (" %u %u %u\n", ptr1, ptr2, ptr3); *ptr3++; printf (" %f %f %f\n", x, y, z); printf (" %f %f %f\n", *ptr1, *ptr2, *ptr3); $ ./prec 3220728372 3220728368 3220728364 2.000000 8.000000 4.000000 3220728372 3220728368 3220728368 2.000000 8.000000 8.000000 Systems Programming Pointers

Systems Programming Pointers Precedence Example (*ptr1)++; printf (" %f %f %f\n", *ptr1, *ptr2, *ptr3); --*ptr2; printf (" %f %f %f\n", x, y, z); return 0; } 3.000000 8.000000 8.000000 3.000000 7.000000 7.000000 3.000000 7.000000 4.000000 Systems Programming Pointers

Review of Pointer Basics This section demonstrated the relationship between pointers and addresses and introduced the respective operators & and * . Showed the use of pointers in simple examples. Introduced call by reference with pointers. Detailed the relationship between pointers and arrays. Systems Programming Pointers