SlideShare una empresa de Scribd logo
1 de 22
Chapter: 10


              Pointers
                Lecture: 36
              Date: 15.10.2012
What are Pointers Used For?

   Accessing array elements
   Passing arguments to a function when the function needs
    to modify the original argument
   Passing arrays and strings to functions
   Obtaining memory from the system
   Creating data structures such as linked lists
Memory and Addresses



    1270

    1271

    1272

    1273

    1274

    1275


   Computer Memory
Memory and Addresses
   Addresses   Locations


     1270

     1271

     1272

     1273

     1274

     1275


   Computer Memory
Memory and Addresses




int IntVar1;    //2 bytes

int IntVar2;   //2 byte
Memory and Addresses
                            Addresses   Locations


                              1270

                              1271
int IntVar1;    //2 bytes
                              1272                  IntVar1
int IntVar2;   //2 byte       1273

                              1274

                              1275                  IntVar2

                            Computer Memory
Memory and Addresses




int IntVar1 = 25;

int IntVar2 = 11;
Memory and Addresses
                     Addresses     Locations


                       1270

                       1271
int IntVar1 = 25;                 25           IntVar1
                       1272

int IntVar2 = 11;      1273

                       1274
                                  11           IntVar2
                       1275




                              Contents/Data
Memory and Addresses
   In some cases we may be interested in knowing the address
    where our variable is being stored during runtime.
   The address that locates a variable within memory is what
    we call a reference to that variable.
    e.g.,
                              & IntVar;

                       Address-of/reference

   When preceding the name of the variable “IntVar” with the
                           operator
    reference operator (&) we are no longer talking about the
    content of the variable itself, but about its reference (i.e., its
    address in memory).
Memory and Addresses
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int IntVar1;
int IntVar2;
cout << &IntVar1 << endl     //print the addresses
      << &IntVar2 << endl;
getch();
return 0; }
Pointer Variable
    The variable that stores the reference to another variable is
     what we call a pointer.
    e.g.,




               ptr &InVar;
Pointer Variable
    The variable that stores the reference to another variable is
     what we call a pointer.
    e.g.,
               Pointer-to             Pointer/Pointer-variable


               int * ptr; //variable “ptr” as a pointer-to “int”
                     ptr &InVar;
Accessing Addresses
int main()
{ int IntVar1 = 25;
   int IntVar2 = 11;
   int* ptr; //pointer to integers
   ptr = &IntVar1; //pointer points to IntVar1
   cout << ptr << endl //print the address of IntVar1
  ptr = &IntVar2
  cout << ptr << endl //print the address of IntVar2
  getch();
  return 0; }
int* ptr;                                1270
ptr = &IntVar1;           ptr
                                         1271
  cout << ptr ;
                          1271
                                                25   IntVar1
                                         1272
                  ptr points-to to the
                                         1273
                  address of IntVar1
                                         1274
                                                11
                                         1275        IntVar2

                                         1270

                                         1271
                                                25
                                         1272        IntVar1
int* ptr;                ptr             1273
ptr = &IntVar2;
                          1274           1274
  cout << ptr ;
                                                11
                  ptr points-to to the   1275        IntVar2
                  address of IntVar2
Accessing Contens
int main()
{ int IntVar1 = 25;
   int IntVar2 = 11;
   int* ptr; //pointer to integers
   ptr = &IntVar1; //pointer points to IntVar1
   cout << *ptr << endl //print the content of IntVar1
   ptr = &IntVar2
   cout << *ptr << endl //print the content of IntVar2
   getch();
   return 0; }
ptr
int* ptr;
ptr = &IntVar1;                       25   IntVar1
                         *ptr is 25
  cout << *ptr ;

                                      11
 deference /indirection operator.
                                           IntVar2
 Expression *ptr means the value of
 the variable pointed to by ptr.



                                      25
                                           IntVar1
                              ptr
int* ptr;
ptr = &IntVar2;                       11
                         *ptr is 11
                                           IntVar2
  cout << *ptr ;
Pointer to Void
   The address that is put in a pointer variable must be the
    same type as the pointer, for example, the address of a float
    variable can’t be assigned to a pointer to int.

    float floVar = 25.67;
    int* ptrInt = &floVar;
Pointer to Void
   The address that is put in a pointer variable must be the
    same type as the pointer, for example, the address of a float
    variable can’t be assigned to a pointer to int.

    float floVar = 25.67;
    int* ptrInt = &floVar; //ERROR: can’t assign float* to int*
Pointer to Void
   The address that is put in a pointer variable must be the
    same type as the pointer, for example, the address of a float
    variable can’t be assigned to a pointer to int.
    float floVar = 25.67;
    int* ptrInt;
    ptrInt = &floVar; //ERROR: can’t assign float* to int*

   Exception to that case is a general-purpose pointer that can
    point to any data type, e.g.,

    void* ptrVoid; //pointer to void
Pointer to Void
   The address that is put in a pointer variable must be the
    same type as the pointer, for example, the address of a float
    variable can’t be assigned to a pointer to int.
    float floVar = 25.67;
    int* ptrInt;
    ptrInt = &floVar; //ERROR: can’t assign float* to int*

   Exception to that case is a general-purpose pointer that can
    point to any data type, e.g.,
    void* ptrVoid; //pointer to void
        ptrVoid = &floVar; //OK
Counting by Integers - Arrays

Más contenido relacionado

Similar a Lec 36 - pointers

Similar a Lec 36 - pointers (20)

Lec 40.41 - pointers
Lec 40.41 -  pointersLec 40.41 -  pointers
Lec 40.41 - pointers
 
Pointers in c++ by minal
Pointers in c++ by minalPointers in c++ by minal
Pointers in c++ by minal
 
Pointer in c++ part2
Pointer in c++ part2Pointer in c++ part2
Pointer in c++ part2
 
Chapter 5 (Part I) - Pointers.pdf
Chapter 5 (Part I) - Pointers.pdfChapter 5 (Part I) - Pointers.pdf
Chapter 5 (Part I) - Pointers.pdf
 
POINTERS IN C MRS.SOWMYA JYOTHI.pdf
POINTERS IN C MRS.SOWMYA JYOTHI.pdfPOINTERS IN C MRS.SOWMYA JYOTHI.pdf
POINTERS IN C MRS.SOWMYA JYOTHI.pdf
 
Pointers in c
Pointers in cPointers in c
Pointers in c
 
Pointers in C
Pointers in CPointers in C
Pointers in C
 
c++ pointers by Amir Hamza Khan (SZABISTIAN)
c++ pointers by Amir Hamza Khan (SZABISTIAN)c++ pointers by Amir Hamza Khan (SZABISTIAN)
c++ pointers by Amir Hamza Khan (SZABISTIAN)
 
Presentation on pointer.
Presentation on pointer.Presentation on pointer.
Presentation on pointer.
 
Pointers
PointersPointers
Pointers
 
Pointer
PointerPointer
Pointer
 
Pointers in C
Pointers in CPointers in C
Pointers in C
 
C pointers
C pointersC pointers
C pointers
 
POINTERS IN C
POINTERS IN CPOINTERS IN C
POINTERS IN C
 
PSPC--UNIT-5.pdf
PSPC--UNIT-5.pdfPSPC--UNIT-5.pdf
PSPC--UNIT-5.pdf
 
Pointer Basics,Constant Pointers & Pointer to Constant.
Pointer Basics,Constant Pointers & Pointer to Constant.Pointer Basics,Constant Pointers & Pointer to Constant.
Pointer Basics,Constant Pointers & Pointer to Constant.
 
Chtp407
Chtp407Chtp407
Chtp407
 
Pointers in c++
Pointers in c++Pointers in c++
Pointers in c++
 
20.C++Pointer.pptx
20.C++Pointer.pptx20.C++Pointer.pptx
20.C++Pointer.pptx
 
oop Lecture 17
oop Lecture 17oop Lecture 17
oop Lecture 17
 

Más de Princess Sam

Lec 49 - stream-files
Lec 49 - stream-filesLec 49 - stream-files
Lec 49 - stream-filesPrincess Sam
 
Lec 42.43 - virtual.functions
Lec 42.43 - virtual.functionsLec 42.43 - virtual.functions
Lec 42.43 - virtual.functionsPrincess Sam
 
Lec 47.48 - stream-files
Lec 47.48 - stream-filesLec 47.48 - stream-files
Lec 47.48 - stream-filesPrincess Sam
 
Lec 45.46- virtual.functions
Lec 45.46- virtual.functionsLec 45.46- virtual.functions
Lec 45.46- virtual.functionsPrincess Sam
 
Lec 33 - inheritance
Lec 33 -  inheritanceLec 33 -  inheritance
Lec 33 - inheritancePrincess Sam
 
Lec 30.31 - inheritance
Lec 30.31 -  inheritanceLec 30.31 -  inheritance
Lec 30.31 - inheritancePrincess Sam
 
Lec 28 - operator overloading
Lec 28 - operator overloadingLec 28 - operator overloading
Lec 28 - operator overloadingPrincess Sam
 
Lec 26.27-operator overloading
Lec 26.27-operator overloadingLec 26.27-operator overloading
Lec 26.27-operator overloadingPrincess Sam
 
Lec 25 - arrays-strings
Lec 25 - arrays-stringsLec 25 - arrays-strings
Lec 25 - arrays-stringsPrincess Sam
 

Más de Princess Sam (10)

Lec 50
Lec 50Lec 50
Lec 50
 
Lec 49 - stream-files
Lec 49 - stream-filesLec 49 - stream-files
Lec 49 - stream-files
 
Lec 42.43 - virtual.functions
Lec 42.43 - virtual.functionsLec 42.43 - virtual.functions
Lec 42.43 - virtual.functions
 
Lec 47.48 - stream-files
Lec 47.48 - stream-filesLec 47.48 - stream-files
Lec 47.48 - stream-files
 
Lec 45.46- virtual.functions
Lec 45.46- virtual.functionsLec 45.46- virtual.functions
Lec 45.46- virtual.functions
 
Lec 33 - inheritance
Lec 33 -  inheritanceLec 33 -  inheritance
Lec 33 - inheritance
 
Lec 30.31 - inheritance
Lec 30.31 -  inheritanceLec 30.31 -  inheritance
Lec 30.31 - inheritance
 
Lec 28 - operator overloading
Lec 28 - operator overloadingLec 28 - operator overloading
Lec 28 - operator overloading
 
Lec 26.27-operator overloading
Lec 26.27-operator overloadingLec 26.27-operator overloading
Lec 26.27-operator overloading
 
Lec 25 - arrays-strings
Lec 25 - arrays-stringsLec 25 - arrays-strings
Lec 25 - arrays-strings
 

Lec 36 - pointers

  • 1. Chapter: 10 Pointers Lecture: 36 Date: 15.10.2012
  • 2. What are Pointers Used For?  Accessing array elements  Passing arguments to a function when the function needs to modify the original argument  Passing arrays and strings to functions  Obtaining memory from the system  Creating data structures such as linked lists
  • 3. Memory and Addresses 1270 1271 1272 1273 1274 1275 Computer Memory
  • 4. Memory and Addresses Addresses Locations 1270 1271 1272 1273 1274 1275 Computer Memory
  • 5. Memory and Addresses int IntVar1; //2 bytes int IntVar2; //2 byte
  • 6. Memory and Addresses Addresses Locations 1270 1271 int IntVar1; //2 bytes 1272 IntVar1 int IntVar2; //2 byte 1273 1274 1275 IntVar2 Computer Memory
  • 7. Memory and Addresses int IntVar1 = 25; int IntVar2 = 11;
  • 8. Memory and Addresses Addresses Locations 1270 1271 int IntVar1 = 25; 25 IntVar1 1272 int IntVar2 = 11; 1273 1274 11 IntVar2 1275 Contents/Data
  • 9.
  • 10. Memory and Addresses  In some cases we may be interested in knowing the address where our variable is being stored during runtime.  The address that locates a variable within memory is what we call a reference to that variable. e.g., & IntVar; Address-of/reference  When preceding the name of the variable “IntVar” with the operator reference operator (&) we are no longer talking about the content of the variable itself, but about its reference (i.e., its address in memory).
  • 11. Memory and Addresses #include <iostream> #include <conio.h> using namespace std; int main() { int IntVar1; int IntVar2; cout << &IntVar1 << endl //print the addresses << &IntVar2 << endl; getch(); return 0; }
  • 12. Pointer Variable  The variable that stores the reference to another variable is what we call a pointer. e.g., ptr &InVar;
  • 13. Pointer Variable  The variable that stores the reference to another variable is what we call a pointer. e.g., Pointer-to Pointer/Pointer-variable int * ptr; //variable “ptr” as a pointer-to “int” ptr &InVar;
  • 14. Accessing Addresses int main() { int IntVar1 = 25; int IntVar2 = 11; int* ptr; //pointer to integers ptr = &IntVar1; //pointer points to IntVar1 cout << ptr << endl //print the address of IntVar1 ptr = &IntVar2 cout << ptr << endl //print the address of IntVar2 getch(); return 0; }
  • 15. int* ptr; 1270 ptr = &IntVar1; ptr 1271 cout << ptr ; 1271 25 IntVar1 1272 ptr points-to to the 1273 address of IntVar1 1274 11 1275 IntVar2 1270 1271 25 1272 IntVar1 int* ptr; ptr 1273 ptr = &IntVar2; 1274 1274 cout << ptr ; 11 ptr points-to to the 1275 IntVar2 address of IntVar2
  • 16. Accessing Contens int main() { int IntVar1 = 25; int IntVar2 = 11; int* ptr; //pointer to integers ptr = &IntVar1; //pointer points to IntVar1 cout << *ptr << endl //print the content of IntVar1 ptr = &IntVar2 cout << *ptr << endl //print the content of IntVar2 getch(); return 0; }
  • 17. ptr int* ptr; ptr = &IntVar1; 25 IntVar1 *ptr is 25 cout << *ptr ; 11 deference /indirection operator. IntVar2 Expression *ptr means the value of the variable pointed to by ptr. 25 IntVar1 ptr int* ptr; ptr = &IntVar2; 11 *ptr is 11 IntVar2 cout << *ptr ;
  • 18. Pointer to Void  The address that is put in a pointer variable must be the same type as the pointer, for example, the address of a float variable can’t be assigned to a pointer to int. float floVar = 25.67; int* ptrInt = &floVar;
  • 19. Pointer to Void  The address that is put in a pointer variable must be the same type as the pointer, for example, the address of a float variable can’t be assigned to a pointer to int. float floVar = 25.67; int* ptrInt = &floVar; //ERROR: can’t assign float* to int*
  • 20. Pointer to Void  The address that is put in a pointer variable must be the same type as the pointer, for example, the address of a float variable can’t be assigned to a pointer to int. float floVar = 25.67; int* ptrInt; ptrInt = &floVar; //ERROR: can’t assign float* to int*  Exception to that case is a general-purpose pointer that can point to any data type, e.g., void* ptrVoid; //pointer to void
  • 21. Pointer to Void  The address that is put in a pointer variable must be the same type as the pointer, for example, the address of a float variable can’t be assigned to a pointer to int. float floVar = 25.67; int* ptrInt; ptrInt = &floVar; //ERROR: can’t assign float* to int*  Exception to that case is a general-purpose pointer that can point to any data type, e.g., void* ptrVoid; //pointer to void ptrVoid = &floVar; //OK

Notas del editor

  1. Student Book
  2. Student Book
  3. Student Book