04 Data and C

background image

University  of  Washington  

Sec3on  1:  Memory,  Data,  and  Addressing  

¢

Preliminaries  

¢

Represen3ng  informa3on  as  bits  and  bytes  

¢

Organizing  and  addressing  data  in  memory  

¢

Manipula3ng  data  in  memory  using  C  

¢

Boolean  algebra  and  bit-­‐level  manipula3ons  

Memory,  Data  and  C  

background image

University  of  Washington  

Addresses  and  Pointers  in  C  

¢

Variable  declara3ons  

§

int  x,  y;  

§

Finds  two  loca1ons  in  memory  in  which  to  store  2  integers  (1  word  each)  

¢

Pointer  declara3ons  use  *  

§

int  *

ptr

;    

§

Declares  a  variable  

ptr  

that  is  a  pointer  to  a  data  item  that  is  an  integer  

¢

Assignment  to  a  pointer  

§

ptr  =  &x;  

§

Assigns  

ptr  

to  point  to  the  address  where  x  is  stored  

&

 =  ‘address  of  value’  

*

 =  ‘value  at  address’  

               or  ‘dereference’  

Memory,  Data  and  C  

background image

University  of  Washington  

Addresses  and  Pointers  in  C  

¢

To  use  the  value  pointed  to  by  a  pointer  we  use  dereference  (*)  

§

Given  a  pointer,  we  can  get  the  value  it  points  to  by  using  the  

*  

operator  

§

*ptr  is  the  value  at  the  memory  address  given  by  the  value  of  ptr  

¢

Examples  

§

If  

ptr  

=  &x  then  y  =  *

ptr  

+  1  is  the  same  as  y  =  x  +  1  

§

If  

ptr  

=  &y  then  y  =  *

ptr  

+  1  is  the  same  as  y  =  y  +  1  

§

What  is    *(&x)    equivalent  to?  

&

 =  ‘address  of  value’  

*

 =  ‘value  at  address’  

               or  ‘dereference’  

Memory,  Data  and  C  

background image

University  of  Washington  

Addresses  and  Pointers  in  C  

¢

We  can  do  arithme3c  on  pointers  

§

ptr  

=  

ptr  

+  1;          

//  really  adds  4:  type  of  ptr  is  int*,  and  an  int  uses  4  bytes!  

§

Changes  the  value  of  the  pointer  so  that  it  now  points  to  the  next  data  

item  in  memory  (that  may  be  y,  or  it  may  not  –  this  is  dangerous!)  

&

 =  ‘address  of  value’  

*

 =  ‘value  at  address’  

               or  ‘dereference’  

Memory,  Data  and  C  

background image

University  of  Washington  

Assignment  in  C  

¢

LeN-­‐hand-­‐side  =  right-­‐hand-­‐side  

§

LHS  must  evaluate  to  a  memory  loca=on  (a  variable)  

§

RHS  must  evaluate  to  a  value  (could  be  an  address!)  

¢

E.g.,  x  at  loca3on  0x04,  y  at  0x18  

§

x  originally  0x0,  y  originally  0x3CD02700  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

00  

00  

00  

00  

3C  

D0  

27  

00  

Memory,  Data  and  C  

background image

University  of  Washington  

Assignment  in  C  

¢

LeN-­‐hand-­‐side  =  right-­‐hand-­‐side  

§

LHS  must  evaluate  to  a  memory  loca=on  (a  variable)  

§

RHS  must  evaluate  to  a  value  (could  be  an  address!)  

¢

E.g.,  x  at  loca3on  0x04,  y  at  0x18  

§

x  originally  0x0,  y  originally  0x3CD02700  

§

int  x,  y;  

x  =  y  +  3;  //get  value  at  y,  add  3,  put  it  in  x  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

3C  

D0  

27  

00  

Memory,  Data  and  C  

00  

00  

00  

00  

background image

University  of  Washington  

Assignment  in  C  

¢

LeN-­‐hand-­‐side  =  right-­‐hand-­‐side  

§

LHS  must  evaluate  to  a  memory  loca=on  (a  variable)  

§

RHS  must  evaluate  to  a  value  (could  be  an  address!)  

¢

E.g.,  x  at  loca3on  0x04,  y  at  0x18  

§

x  originally  0x0,  y  originally  0x3CD02700  

§

int  x,  y;  

x  =  y  +  3;  //get  value  at  y,  add  3,  put  it  in  x  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

3C  

D0  

27  

00  

Memory,  Data  and  C  

3C  

D0  

27  

03  

background image

University  of  Washington  

Assignment  in  C  

¢

LeN-­‐hand-­‐side  =  right-­‐hand-­‐side  

§

LHS  must  evaluate  to  a  memory  loca=on  (a  variable)  

§

RHS  must  evaluate  to  a  value  (could  be  an  address!)  

¢

E.g.,  x  at  loca3on  0x04,  y  at  0x18  

§

x  originally  0x0,  y  originally  0x3CD02700  

§

int  *x;  int  y;  

x  =  &y  +  3;  //  get  address  of  y,  add  ??  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

3C  

D0  

27  

00  

Memory,  Data  and  C  

00  

00  

00  

00  

background image

University  of  Washington  

Assignment  in  C  

¢

LeN-­‐hand-­‐side  =  right-­‐hand-­‐side  

§

LHS  must  evaluate  to  a  memory  loca=on  (a  variable)  

§

RHS  must  evaluate  to  a  value  (could  be  an  address!)  

¢

E.g.,  x  at  loca3on  0x04,  y  at  0x18  

§

x  originally  0x0,  y  originally  0x3CD02700  

§

int  *x;  int  y;  

x  =  &y  +  3;  //  get  address  of  y,  add  

12

   

                                     //  0x0018  +  0x000C  =  0x0024  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

3C  

D0  

27  

00  

Memory,  Data  and  C  

00  

00  

00  

24  

background image

University  of  Washington  

Assignment  in  C  

¢

LeN-­‐hand-­‐side  =  right-­‐hand-­‐side  

§

LHS  must  evaluate  to  a  memory  loca=on  (a  variable)  

§

RHS  must  evaluate  to  a  value  (could  be  an  address!)  

¢

E.g.,  x  at  loca3on  0x04,  y  at  0x18  

§

x  originally  0x0,  y  originally  0x3CD02700  

§

int  *x;  int  y;  

x  =  &y  +  3;  //  get  address  of  y,  add  12  

                                     //  0x0018  +  0x000C  =  0x0024  

 

*x  =  y;  //  value  of  y  copied  to    

                       //  loca1on  to  which  x  points  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

00  

00  

00  

24  

3C  

D0  

27  

00  

Memory,  Data  and  C  

background image

University  of  Washington  

Assignment  in  C  

¢

LeN-­‐hand-­‐side  =  right-­‐hand-­‐side  

§

LHS  must  evaluate  to  a  memory  loca=on  (a  variable)  

§

RHS  must  evaluate  to  a  value  (could  be  an  address!)  

¢

E.g.,  x  at  loca3on  0x04,  y  at  0x18  

§

x  originally  0x0,  y  originally  0x3CD02700  

§

int  *x;  int  y;  

x  =  &y  +  3;  //  get  address  of  y,  add  12  

                                     //  0x0018  +  0x000C  =  0x0024  

 

*x  =  y;  //  value  of  y  copied  to    

                       //  loca1on  to  which  x  points  

0000  

0004  

0008  

000C  

0010  

0014  

0018  

001C  

0020  

0024  

00  

00  

00  

24  

3C  

D0  

27  

00  

3C  

D0  

27  

00  

Memory,  Data  and  C  


Wyszukiwarka

Podobne podstrony:
04 Emotions and well being across cultures
DRUK 04, Data:
04 Shifting and Sign Extension
Data and memory optimization techniques for embedded systems
Allyson James Tales Of The Shareem 04 Aiden and Ky
Genolevures complete genomes provide data and tools
Murray Rothbard 04 Menger and Bohm Bawerk
Alastair J Archibald Grimm Dragonblaster 04 Truth and Deception (v5 0)
Baum, L Frank Oz 04 Dorothy and the Wizard in Oz
04 Shifting and Sign Extension
Microsoft Lync Server 2010 Resource Kit Chapter 04 Conferencing and Collaboration
Edgar Rice Burroughs New Tarzan 04 Tarzan and the Abominable Snowmen # Barton Werper
Donna Leon [Inspector Brunetti 04] Death and Judgement(v1 5)(rtf)
Kenyon, Sherrilyn League 04 Fire And Ice rtf
L B Gregg (Men of Smithfield 04) In And Out
Malicious Data and Computer Security
Hatfield Sense Data and the Mind Body Problem
Cora Zane 04 Moonlight and Shadows

więcej podobnych podstron