Structures (1A) Young Won Lim 12/4/17

Size: px
Start display at page:

Download "Structures (1A) Young Won Lim 12/4/17"

Transcription

1 Structures (1A)

2 Copyright (c) Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Please send corrections (or suggestions) to youngwlim@hotmail.com. This document was produced by using LibreOffice.

3 Structure Variable Declaration accessing a structure variable definition &var var struct aaa var; var declaration &var = &var.i &var.s &var.c var.i var.s var.c accessing its members 3

4 Compare with function definitions function type int add (int x, int y) ; prototype definition int add (int x, int y) { return (x + y); } definition struct aaa var; var declaration var.i = 100; member access sum = add (30, 20) ; function call 4

5 Struct Variable Declaration (1) definition } var ; struct aaa var; var declaration 5

6 Struct Variable Declaration (2) definition } var ; struct aaa var; var declaration definition + variable declaration 6

7 Struct Variable Declaration (3) typedef } ATYPE ; typedef struct aaa ATYPE ; ATYPE var; ATYPE var; 7

8 Struct Variable Declaration (4) typedef } ATYPE ; typedef struct aaa ATYPE ; ATYPE var; ATYPE var; 8

9 Struct Variable Declaration Summary struct aaa var; typedef struct aaa ATYPE ; ATYPE var; } var ; typedef } ATYPE ; ATYPE var; 9

10 Initialization &v1.s &v1.i &v1.c v1.s v1.i v1.c =100 =10 = A &v2.s &v2.i &v2.c v2.s v2.i v2.c struct aaa v1 = { 100, 10, 'A' struct aaa v2; 10

11 Assignments &v1.s &v1.i &v1.c v1.s v1.i v1.c =100 =10 = A &v2.s &v2.i &v2.c v2.s v2.i v2.c v2 = v1 ; v1 v2 v2.i = v1.i ; v2.s = v1.s ; v2.c = v1.c ; v1.s v1.i v1.c =100 =10 = A v2.s v2.i v2.c =100 =10 = A 11

12 Variable Declaration Allocates Memory definition struct aaa v1 = { 100, 10, 'A' &v1 v1.s =100 v1.i =10 v1.c = A 12

13 Pointer to Structure Variable Declaration p struct aaa *p ; &v1 v1.s =100 v1.i =10 v1.c = A pointer variable assignment p p = &v1; &v1 p->s p->i p->c 13

14 Dereferencing Pointers to Structures (1) (*p).mem p->mem &var var &var = &var.i var.i &var.s var.s &var.c var.c p p (*p) (*p)->s (*p)->i (*p)->c = p->s = p->i = p->c = v1.s = v1.i = v1.c 14

15 Dereferencing Pointers to Structures (2) *p.mem *(p.mem) p : a struct variable mem : another pointer variable &p p &p = &p.i p.i &p.s p.s &p.q p.q *p.q 15

16 Dereferencing Pointers to Structures (3) *p->mem *(p->mem) p : a pointer to a struct variable mem: another pointer variable p p (*p) (*p)->s (*p)->i (*p)->q = p->s = p->i = p->q = v1.s = v1.i = v1.q *p->q 16

17 Dereferencing Pointers to Structures definition (*p).mem p->mem struct aaa v1 = { 100, 10, 'A' *p.mem *(p.mem) struct aaa *p = &v1; *p->mem *(p->mem) 17

18 Memory Layout (1) definition sizeof (int) = 4 bytes sizeof (short) = 2 bytes sizeof (char) = 1 bytes &var.i (int) var.i struct aaa var; var declaration &var.s (short) var.s address data &var.c (char) var.i &var.i &var.s &var.c var.i var.s var.c sizeof (var) = 8 bytes 18

19 Memory Layout (2) definition &var.s (short) var.s struct aaa var; var declaration &var.i (int) var.i address data &var.c (char) var.i &var.s &var.i &var.c var.s var.i var.c sizeof (var) = 12 bytes 19

20 Struct Definition and Declarations definition 8 bits var 8 bits struct aaa var; var declaration var.i var.c struct aaa *ptr; var declaration ptr 20

21 Nested Structures struct point { int x ; int y ; struct rect { struct point p1 ; struct point p2 ; address data &r.p1 r.p1 &r.p2 r.p2 struct point pa ; struct rect r ; struct point pb ; &r.p1.x r.p1.x &r.p1.y r.p1.y pa.x = 10 ; pa.y = 20 ; pb.x = 300 ; pb.y = 400 ; r.p1 = pa ; r.p2 = pb ; &r.p2.x &r.p2.y r.p2.x r.p2.y 21

22 Array Implementation // within main() int i ; char * name[3] = { John, Mary, Baker }; int stid[3] = { , , }; int eng[3] = { 94, 85, 90 }; int math[3] = { 88, 92, 98 }; double gpa[3]; for (i=0; i<3; ++i) printf( \n ); printf( name: %s \n, name[i] ); printf( stid: %d \n, stid[i] ); printf( eng: %d \n, eng[i] ); printf( math: %d \n, math[i] ); printf( gpa: %f \n, (eng[i] + math[i]) / 2. ); } 22

23 Struct Implementation // outside main() struct srec { char * name ; int stid ; int eng ; int math ; double gpa ; // within main() struct srec S[3] = { { John, , 94, 88 }, { Mary, , 85, 92 }, { Baker, , 90, 98 } }; for (i=0; i<3; ++i) printf( \n ); printf( name: %s \n, S[i].name ); printf( stid: %d \n, S[i].stid ); printf( eng: %d \n, S[i].eng ); printf( math: %d \n, S[i].math ); printf( gpa: %f \n, (S[i].eng + S[i].math) / 2. ); } 23

24 Struct as a function argument // outside main() struct srec { char * name ; int stid ; int eng ; int math ; double gpa ; double compute_gpa (struct srec R) { return (R.eng + R.math) / 2. ; } // within main() struct srec S = { John, , 94, 88 }; gpa = compute_gpa ( S ); double compute_gpa (struct srec R) gpa = compute_gpa ( S ); S.name, S.stid, S.eng, S.math, S.gpa char *, int, int, int, double R.name, R.stid, R.eng, R.math, R.gpa double compute_gpa (struct srec R) double gpa; gpa = compute_gpa ( S ); 24

25 Struct returning function // outside main() struct srec { char * name ; int stid ; int eng ; int math ; double gpa ; struct srec calc_gpa (struct srec R) { R.gpa = (R.eng + R.math) / 2. ; return R; } // within main() struct srec S = { John, , 94, 88 }; gpa = calc_gpa ( S ); struct srec calc_gpa (struct srec R) S = calc_gpa ( S ); S.name, S.stid, S.eng, S.math, S.gpa char *, int, int, int, double R.name, R.stid, R.eng, R.math, R.gpa struct srec calc_gpa (struct srec R) double gpa; S = calc_gpa ( S ); 25

26 Struct pointer as a function argument // outside main() struct srec { char * name ; int stid ; int eng ; int math ; double gpa ; void fill_gpa (struct srec * R) { (*R).gpa = ((*R).eng + (*R).math) / 2. ; } // within main() struct srec S = { John, , 94, 88 }; &S R gpa = fill_gpa ( &S ); void fill_gpa (struct srec * R) ; S.name, S.stid, S.eng, S.math, S.gpa gpa = fill_gpa ( &S ); void fill_gpa (struct srec * R) ; double gpa; gpa = fill_gpa ( &S ); (*R).eng (*R).math (*R).gpa R->eng R->math R->gpa 26

27 References [1] Essential C, Nick Parlante [2] Efficient C Programming, Mark A. Weiss [3] C A Reference Manual, Samuel P. Harbison & Guy L. Steele Jr. [4] C Language Express, I. K. Chun 27

Structures (1A) Young Won Lim 11/8/16

Structures (1A) Young Won Lim 11/8/16 Structures (1A) Copyright (c) 2010-2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Structure (1A) Young Won Lim 7/30/13

Structure (1A) Young Won Lim 7/30/13 Structure (1A) Copyright (c) 2010 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Applications of Structures (1A) Young Won Lim 12/8/17

Applications of Structures (1A) Young Won Lim 12/8/17 Applications of (1A) Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any

More information

Applications of Structures (1A) Young Won Lim 12/4/17

Applications of Structures (1A) Young Won Lim 12/4/17 Applications of (1A) Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any

More information

Pointers (1A) Young Won Lim 11/1/17

Pointers (1A) Young Won Lim 11/1/17 Pointers (1A) Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Applications of Arrays (1A) Young Won Lim 2/11/17

Applications of Arrays (1A) Young Won Lim 2/11/17 Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Applications of Pointers (1A) Young Won Lim 12/26/17

Applications of Pointers (1A) Young Won Lim 12/26/17 Applications of (1A) Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any

More information

Applications of Arrays (1A) Young Won Lim 3/15/17

Applications of Arrays (1A) Young Won Lim 3/15/17 Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Pointers (1A) Young Won Lim 1/9/18

Pointers (1A) Young Won Lim 1/9/18 Pointers (1A) Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Pointers (1A) Young Won Lim 1/5/18

Pointers (1A) Young Won Lim 1/5/18 Pointers (1A) Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Pointers (1A) Young Won Lim 3/5/18

Pointers (1A) Young Won Lim 3/5/18 Pointers (1A) Copyright (c) 2010-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Arrays (1A) Young Won Lim 1/27/17

Arrays (1A) Young Won Lim 1/27/17 Arrays (1A) Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Arrays (1A) Young Won Lim 12/4/17

Arrays (1A) Young Won Lim 12/4/17 Arrays (1A) Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Function Overview (1A) Young Won Lim 10/23/17

Function Overview (1A) Young Won Lim 10/23/17 Function Overview (1A) Copyright (c) 2010 2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or

More information

Overview (1A) Young Won Lim 9/25/17

Overview (1A) Young Won Lim 9/25/17 Overview (1A) Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Applications of Pointers (1A) Young Won Lim 2/27/18

Applications of Pointers (1A) Young Won Lim 2/27/18 Alications of (1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Overview (1A) Young Won Lim 9/14/17

Overview (1A) Young Won Lim 9/14/17 Overview (1A) Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Applications of Pointers (1A) Young Won Lim 3/14/18

Applications of Pointers (1A) Young Won Lim 3/14/18 (1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished

More information

Applications of Pointers (1A) Young Won Lim 4/11/18

Applications of Pointers (1A) Young Won Lim 4/11/18 (1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished

More information

Overview (1A) Young Won Lim 9/9/17

Overview (1A) Young Won Lim 9/9/17 Overview (1A) Copyright (c) 2009-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Applications of Pointers (1A) Young Won Lim 3/21/18

Applications of Pointers (1A) Young Won Lim 3/21/18 (1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished

More information

Applications of Pointers (1A) Young Won Lim 3/31/18

Applications of Pointers (1A) Young Won Lim 3/31/18 (1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished

More information

Pointers (1A) Young Won Lim 1/14/18

Pointers (1A) Young Won Lim 1/14/18 Pointers (1A) Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Pointers (1A) Young Won Lim 1/22/18

Pointers (1A) Young Won Lim 1/22/18 Pointers (1A) Copyright (c) 2010-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Pointers (1A) Young Won Lim 2/6/18

Pointers (1A) Young Won Lim 2/6/18 Pointers (1A) Copyright (c) 2010-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Pointers (1A) Young Won Lim 2/10/18

Pointers (1A) Young Won Lim 2/10/18 Pointers (1A) Copyright (c) 2010-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Applications of Pointers (1A) Young Won Lim 4/24/18

Applications of Pointers (1A) Young Won Lim 4/24/18 (1A) Coyright (c) 2010-2018 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version ublished

More information

Applications of Pointers (1A) Young Won Lim 1/5/18

Applications of Pointers (1A) Young Won Lim 1/5/18 Alications of (1A) Coyright (c) 2010-2017 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Pointers (1A) Young Won Lim 10/18/17

Pointers (1A) Young Won Lim 10/18/17 Pointers (1A) Coyright (c) 2010-2013 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Pointers (1A) Young Won Lim 10/23/17

Pointers (1A) Young Won Lim 10/23/17 Pointers (1A) Coyright (c) 2010-2013 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Pointers (1A) Young Won Lim 12/4/17

Pointers (1A) Young Won Lim 12/4/17 Pointers (1A) Coyright (c) 2010-2017 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Type (1A) Young Won Lim 2/17/18

Type (1A) Young Won Lim 2/17/18 Type (1A) Copyright (c) 2010-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

File (1A) Young Won Lim 11/25/16

File (1A) Young Won Lim 11/25/16 File (1A) Copyright (c) 2010-2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Example 3 : using a structure array. Young Won Lim 11/25/17

Example 3 : using a structure array. Young Won Lim 11/25/17 : using a structure array Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

Memory Arrays (4H) Gate Level Design. Young Won Lim 3/15/16

Memory Arrays (4H) Gate Level Design. Young Won Lim 3/15/16 Arrays (4H) Gate Level Design Young Won Lim 3/15/16 Copyright (c) 2011, 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation

More information

Arrays and Strings (2H) Young Won Lim 3/7/18

Arrays and Strings (2H) Young Won Lim 3/7/18 Arrays and Strings (2H) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or

More information

Example 1. Young Won Lim 11/17/17

Example 1. Young Won Lim 11/17/17 Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Example 1 : using 1-d arrays. Young Won Lim 12/13/17

Example 1 : using 1-d arrays. Young Won Lim 12/13/17 : using 1-d arrays Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any

More information

Example 2. Young Won Lim 11/24/17

Example 2. Young Won Lim 11/24/17 Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Example 3. Young Won Lim 11/22/17

Example 3. Young Won Lim 11/22/17 Copyright (c) 2010-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Memory (1A) Young Won Lim 9/7/17

Memory (1A) Young Won Lim 9/7/17 (1A) Copyright (c) 21-26 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Number System (1A) Young Won Lim 7/7/10

Number System (1A) Young Won Lim 7/7/10 Number System (A) 7/7/ Copyrigt (c) 9-6 Young W. Lim. Permission is granted to copy, distribute and/or modify tis document under te terms of te GNU ree Documentation License, Version. or any later version

More information

Applications of Array Pointers (1A) Young Won Lim 11/22/18

Applications of Array Pointers (1A) Young Won Lim 11/22/18 Appliations of Array Pointers (1A) Copyright () 2010-2018 Young W. Lim. Permission is granted to opy, distribute and/or modify this doument under the terms of the GNU Free Doumentation Liense, Version

More information

Expressions (2E) Young Won Lim 4/9/18

Expressions (2E) Young Won Lim 4/9/18 Expressions (2E) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Variables (2D) Young Won Lim 3/28/18

Variables (2D) Young Won Lim 3/28/18 Variables (2D) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Pointers (2G) Young Won Lim 3/7/18

Pointers (2G) Young Won Lim 3/7/18 Pointers (2G) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Expressions (2E) Young Won Lim 3/10/18

Expressions (2E) Young Won Lim 3/10/18 Expressions (2E) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

ELF (1A) Young Won Lim 10/22/14

ELF (1A) Young Won Lim 10/22/14 ELF (1A) Copyright (c) 2010-2014 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Program Structure (2A) Young Won Lim 3/8/18

Program Structure (2A) Young Won Lim 3/8/18 Program Structure (2A) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or

More information

Program Structure (2A) Young Won Lim 5/28/18

Program Structure (2A) Young Won Lim 5/28/18 Program Structure (2A) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or

More information

Accessibility (1A) Young Won Lim 8/22/13

Accessibility (1A) Young Won Lim 8/22/13 Accessibility (1A) Copyright (c) 2011-2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any

More information

ARM Assembly Exercise (1B) Young Won Lim 7/16/16

ARM Assembly Exercise (1B) Young Won Lim 7/16/16 ARM Assembly Exercise (1B) Copyright (c) 2014-2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

Class (1A) Young Won Lim 9/8/14

Class (1A) Young Won Lim 9/8/14 Class (1A) Copyright (c) 2011-2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Algorithms Bubble Sort (1B) Young Won Lim 4/5/18

Algorithms Bubble Sort (1B) Young Won Lim 4/5/18 Algorithms Bubble Sort (1B) Young Won Lim 4/5/18 Copyright (c) 2017 2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation

More information

Structures (2I) Young Won Lim 4/17/18

Structures (2I) Young Won Lim 4/17/18 Structures (2I) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Structures (2I) Young Won Lim 3/7/18

Structures (2I) Young Won Lim 3/7/18 Structures (2I) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Computer Systems Principles. C Pointers

Computer Systems Principles. C Pointers Computer Systems Principles C Pointers 1 Learning Objectives Learn about floating point number Learn about typedef, enum, and union Learn and understand pointers 2 FLOATING POINT NUMBER 3 IEEE Floating

More information

C: Pointers. C: Pointers. Department of Computer Science College of Engineering Boise State University. September 11, /21

C: 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 information

Day02 A. Young W. Lim Sat. Young W. Lim Day02 A Sat 1 / 12

Day02 A. Young W. Lim Sat. Young W. Lim Day02 A Sat 1 / 12 Day02 A Young W. Lim 2017-10-07 Sat Young W. Lim Day02 A 2017-10-07 Sat 1 / 12 Outline 1 Based on 2 Introduction (2) - Basic Elements Basic Elements in C Programming Young W. Lim Day02 A 2017-10-07 Sat

More information

Class (1A) Young Won Lim 11/20/14

Class (1A) Young Won Lim 11/20/14 Class (1A) Copyright (c) 2011 2014 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

FUNCTION POINTERS. int (*pf)(); // pf is a pointer to a function returning an int.

FUNCTION POINTERS. int (*pf)(); // pf is a pointer to a function returning an int. Function Pointers 1 FUNCTION POINTERS Sometimes we would like to choose different behaviors at different times in the same piece of code or function. For instance in a sorting routine, we want to allow

More information

ELF (1A) Young Won Lim 3/24/16

ELF (1A) Young Won Lim 3/24/16 ELF (1A) Copyright (c) 21-216 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version

More information

Methods (2A) Young Won Lim 12/10/14

Methods (2A) Young Won Lim 12/10/14 Methods (2A) Copyright (c) 2011-2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

3/22/2016. Pointer Basics. What is a pointer? C Language III. CMSC 313 Sections 01, 02. pointer = memory address + type

3/22/2016. Pointer Basics. What is a pointer? C Language III. CMSC 313 Sections 01, 02. pointer = memory address + type Pointer Basics What is a pointer? pointer = memory address + type C Language III CMSC 313 Sections 01, 02 A pointer can contain the memory address of any variable type A primitive (int, char, float) An

More information

10/20/2015. Midterm Topic Review. Pointer Basics. C Language III. CMSC 313 Sections 01, 02. Adapted from Richard Chang, CMSC 313 Spring 2013

10/20/2015. Midterm Topic Review. Pointer Basics. C Language III. CMSC 313 Sections 01, 02. Adapted from Richard Chang, CMSC 313 Spring 2013 Midterm Topic Review Pointer Basics C Language III CMSC 313 Sections 01, 02 1 What is a pointer? Why Pointers? Pointer Caution pointer = memory address + type A pointer can contain the memory address of

More information

POINTERS, STRUCTURES AND INTRODUCTION TO DATA STRUCTURES

POINTERS, STRUCTURES AND INTRODUCTION TO DATA STRUCTURES 1 POINTERS, STRUCTURES AND INTRODUCTION TO DATA STRUCTURES 2.1 POINTERS Pointer is a variable that holds the address of another variable. Pointers are used for the indirect manipulation of the variable.

More information

Binary Search Tree (3A) Young Won Lim 6/2/18

Binary Search Tree (3A) Young Won Lim 6/2/18 Binary Search Tree (A) /2/1 Copyright (c) 2015-201 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

THE GOOD, BAD AND UGLY ABOUT POINTERS. Problem Solving with Computers-I

THE GOOD, BAD AND UGLY ABOUT POINTERS. Problem Solving with Computers-I THE GOOD, BAD AND UGLY ABOUT POINTERS Problem Solving with Computers-I The good: Pointers pass data around efficiently Pointers and arrays 100 104 108 112 116 ar 20 30 50 80 90 ar is like a pointer to

More information

CS 261 Data Structures. Introduction to C Programming

CS 261 Data Structures. Introduction to C Programming CS 261 Data Structures Introduction to C Programming Why C? C is a lower level, imperative language C makes it easier to focus on important concepts for this class, including memory allocation execution

More information

Midterm Examination # 2 Wednesday, March 19, Duration of examination: 75 minutes STUDENT NAME: STUDENT ID NUMBER:

Midterm Examination # 2 Wednesday, March 19, Duration of examination: 75 minutes STUDENT NAME: STUDENT ID NUMBER: Page 1 of 7 School of Computer Science 60-141-01 Introduction to Algorithms and Programming Winter 2014 Midterm Examination # 2 Wednesday, March 19, 2014 ANSWERS Duration of examination: 75 minutes STUDENT

More information

Binary Search Tree (2A) Young Won Lim 5/17/18

Binary Search Tree (2A) Young Won Lim 5/17/18 Binary Search Tree (2A) Copyright (c) 2015-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or

More information

Character Strings. String-copy Example

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

More information

C++ Structures Programming Workshop 2 (CSCI 1061U)

C++ Structures Programming Workshop 2 (CSCI 1061U) C++ Structures Programming Workshop 2 (CSCI 1061U) Faisal Qureshi http://faculty.uoit.ca/qureshi University of Ontario Institute of Technology C++ struct struct keyword can be used to define new data types

More information

Polymorphism (1A) Young Won Lim 8/22/13

Polymorphism (1A) Young Won Lim 8/22/13 Polymorhism (1A) Coyright (c) 2011-2012 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Methods (2A) Young Won Lim 10/14/14

Methods (2A) Young Won Lim 10/14/14 Methods (2A) Copyright (c) 2011-2013 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Low-Level C Programming. Memory map Pointers Arrays Structures

Low-Level C Programming. Memory map Pointers Arrays Structures Low-Level C Programming Memory map Pointers Arrays Structures Memory Map 0x7FFF_FFFF Binaries load at 0x20000 by default Stack start set by binary when started Stack grows downwards You will need one stack

More information

Polymorphism (1A) Young Won Lim 8/15/13

Polymorphism (1A) Young Won Lim 8/15/13 Polymorhism (1A) Coyright (c) 2011-2012 Young W. Lim. Permission is granted to coy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later

More information

Structures. Basics of Structures (6.1) EECS l Now struct point is a valid type. l Defining struct variables: struct point { int x; int y; };

Structures. Basics of Structures (6.1) EECS l Now struct point is a valid type. l Defining struct variables: struct point { int x; int y; }; Structures EECS 2031 25 September 2017 1 Basics of Structures (6.1) struct point { int x; int y; keyword struct introduces a structure declaration. point: structure tag x, y: members The same member names

More information

Stack Tutorial. Young W. Lim Sat. Young W. Lim Stack Tutorial Sat 1 / 15

Stack Tutorial. Young W. Lim Sat. Young W. Lim Stack Tutorial Sat 1 / 15 Stack Tutorial Young W. Lim 2016-10-15 Sat Young W. Lim Stack Tutorial 2016-10-15 Sat 1 / 15 Outline 1 Introduction References Stack Background Transferring Control Young W. Lim Stack Tutorial 2016-10-15

More information

Haskell Overview IV (4A) Young Won Lim 10/13/16

Haskell Overview IV (4A) Young Won Lim 10/13/16 (4A) Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 13, SPRING 2013

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 13, SPRING 2013 CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 13, SPRING 2013 TOPICS TODAY Reminder: MIDTERM EXAM on THURSDAY Pointer Basics Pointers & Arrays Pointers & Strings Pointers & Structs

More information

Polymorphism Overview (1A) Young Won Lim 2/20/18

Polymorphism Overview (1A) Young Won Lim 2/20/18 Polymorphism Overview (1A) Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

Pointers and Arrays 1

Pointers and Arrays 1 Pointers and Arrays 1 Pointers and Arrays When an array is declared, The compiler allocates sufficient amount of storage to contain all the elements of the array in contiguous memory locations The base

More information

IV Unit Second Part STRUCTURES

IV Unit Second Part STRUCTURES STRUCTURES IV Unit Second Part Structure is a very useful derived data type supported in c that allows grouping one or more variables of different data types with a single name. The general syntax of structure

More information

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING PREVIEW SLIDES 14, SPRING 2013

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING PREVIEW SLIDES 14, SPRING 2013 CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING PREVIEW SLIDES 14, SPRING 2013 RECAP ARRAYS VS. POINTERS C Parameter Passing Notes We'll say formal parameter vs actual parameter. Formal

More information

POINTER & REFERENCE VARIABLES

POINTER & REFERENCE VARIABLES Lecture 9 POINTER & REFERENCE VARIABLES Declaring data pointer variables Assignment operations with pointers Referring objects using pointer variables Generic pointers Operations with pointer variables

More information

Eulerian Cycle (2A) Young Won Lim 4/26/18

Eulerian Cycle (2A) Young Won Lim 4/26/18 Eulerian Cycle (2A) Copyright (c) 2015 2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any

More information

Day05 A. Young W. Lim Sat. Young W. Lim Day05 A Sat 1 / 14

Day05 A. Young W. Lim Sat. Young W. Lim Day05 A Sat 1 / 14 Day05 A Young W. Lim 2017-10-07 Sat Young W. Lim Day05 A 2017-10-07 Sat 1 / 14 Outline 1 Based on 2 Structured Programming (2) Conditions and Loops Conditional Statements Loop Statements Type Cast Young

More information

Example : Define a structure of student having fields Roll No, Name, Address and fees paid ( Make appropriate assumption about datatypes) Method -1

Example : Define a structure of student having fields Roll No, Name, Address and fees paid ( Make appropriate assumption about datatypes) Method -1 Structure Structure is a user defined data type, it is used to combine different types of available data type(s) to form a new data type, to suite a real life problem. The syntax of a structure is as follows

More information

CSC231 C Tutorial Fall 2018 Introduction to C

CSC231 C Tutorial Fall 2018 Introduction to C mith College CSC231 C Tutorial Fall 2018 Introduction to C Dominique Thiébaut dthiebaut@smith.edu Learning C in 4 Installments! Dennis Ritchie 1969 to 1973 AT&T Bell Labs Close to Assembly Unix Standard

More information

(13-2) Dynamic Data Structures I H&K Chapter 13. Instructor - Andrew S. O Fallon CptS 121 (November 17, 2017) Washington State University

(13-2) Dynamic Data Structures I H&K Chapter 13. Instructor - Andrew S. O Fallon CptS 121 (November 17, 2017) Washington State University (13-2) Dynamic Data Structures I H&K Chapter 13 Instructor - Andrew S. O Fallon CptS 121 (November 17, 2017) Washington State University Dynamic Data Structures (1) Structures that expand and contract

More information

Preprocessing (2K) Young Won Lim 3/7/18

Preprocessing (2K) Young Won Lim 3/7/18 Preprocessing (2K) Copyright (c) 2014-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any

More information

Data Representation and Storage. Some definitions (in C)

Data Representation and Storage. Some definitions (in C) Data Representation and Storage Learning Objectives Define the following terms (with respect to C): Object Declaration Definition Alias Fundamental type Derived type Use pointer arithmetic correctly Explain

More information

The Complexity of Algorithms (3A) Young Won Lim 4/3/18

The Complexity of Algorithms (3A) Young Won Lim 4/3/18 Copyright (c) 2015-2018 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information

Aryan College. Fundamental of C Programming. Unit I: Q1. What will be the value of the following expression? (2017) A + 9

Aryan College. Fundamental of C Programming. Unit I: Q1. What will be the value of the following expression? (2017) A + 9 Fundamental of C Programming Unit I: Q1. What will be the value of the following expression? (2017) A + 9 Q2. Write down the C statement to calculate percentage where three subjects English, hindi, maths

More information

First of all, it is a variable, just like other variables you studied

First of all, it is a variable, just like other variables you studied Pointers: Basics What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the address (rather than the value)

More information

Binary Search Tree (3A) Young Won Lim 6/4/18

Binary Search Tree (3A) Young Won Lim 6/4/18 Binary Search Tree (A) /4/1 Copyright (c) 2015-201 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2

More information

Structures, Unions Alignment, Padding, Bit Fields Access, Initialization Compound Literals Opaque Structures Summary. Structures

Structures, Unions Alignment, Padding, Bit Fields Access, Initialization Compound Literals Opaque Structures Summary. Structures Structures Proseminar C Grundlagen und Konzepte Michael Kuhn Research Group Scientific Computing Department of Informatics Faculty of Mathematics, Informatics und Natural Sciences University of Hamburg

More information

CS61C 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-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 information

State Monad (3D) Young Won Lim 9/25/17

State Monad (3D) Young Won Lim 9/25/17 Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published

More information