0% found this document useful (0 votes)
111 views10 pages

C++ Pointers

The document discusses pointers in C++. Some key points: - Pointers store memory addresses of variables. Declaring a pointer variable defines it as a pointer to a specific data type. - The ampersand '&' operator returns the memory address of a variable. The asterisk '*' dereferences a pointer to access the value at the stored address. - Pointer variables can point to memory addresses of other variables or array elements. Changing a value through a pointer also changes the original variable.

Uploaded by

on.bonimos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
111 views10 pages

C++ Pointers

The document discusses pointers in C++. Some key points: - Pointers store memory addresses of variables. Declaring a pointer variable defines it as a pointer to a specific data type. - The ampersand '&' operator returns the memory address of a variable. The asterisk '*' dereferences a pointer to access the value at the stored address. - Pointer variables can point to memory addresses of other variables or array elements. Changing a value through a pointer also changes the original variable.

Uploaded by

on.bonimos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

The sublime and the ridiculous

are often so nearly related that


it is difficult to class them separately.
̶ Tom Paine

CHAPTER 7
▪ To understand pointers, you should first know how data
is stored on the computer.
▪ Each variable is assigned a location in the computer's
memory. The value the variable stores is actually stored
in the location assigned.
▪ To know where the data is stored, C++ has an ampersand
‘&’ symbol.

▪ The & reference operator gives you the address occupied


by a variable.

▪ If var is a variable then, &var gives the that


variable.
Computer Programming 3/20/2021 2
#include <iostream> Output:
using namespace std; 0x7fff5fbff8ac
0x7fff5fbff8a8
0x7fff5fbff8a4
int main()
{ Note: You may not get the same result
int var1 = 3; on your system.
int var2 = 24;
int var3 = 17; The 0x in the beginning represents the
address is in hexadecimal form.
cout << &var1 << endl;
Notice that first address differs from
cout << &var2 << endl; second by 4-bytes and second address
cout << &var3 << endl; differs from third by 4-bytes.

return 0; This is because the size of integer


} (variable of type int) is 4 bytes in 64-bit
system.

Computer Programming 3/20/2021 3


▪ Pointers are used in C++ program to access the memory
and manipulate the address.
▪ For type T, T* is the type “ ”
▪ For example:

Computer Programming 3/20/2021 4


▪ Pointers variables are variables that points to a specific
address in the memory pointed by another variable.
▪ For example: int *p; int *p, *q;
// or, // for many pointers
int* p; int* p, q;
▪ The statement above defines a pointer variable p, which
holds the memory address.
▪ The asterisk ‘*’ is a dereference operator which means
pointer to.
▪ Here, pointer p is a pointer to int, i.e., it is
in the memory address.
▪ If ptr is a pointer then, *ptr gives the that address.

Computer Programming 3/20/2021 5


#include <iostream>
using namespace std;
int main(){
int *pc, c;
c = 5;
cout << "Address of c (&c): " << &c << endl;
cout << "Value of c (c): " << c << endl << endl;
pc = &c; // Pointer pc holds the memory address of variable c
cout << "Address that pointer pc holds (pc): "<< pc << endl;
cout << "Content of the pointer pc holds (*pc): " << *pc << endl << endl;
c = 11; // The content inside memory address &c is changed from 5 to 11.
cout << "Address pointer pc holds (pc): " << pc << endl;
cout << "Content of the pointer pc holds (*pc): " << *pc << endl << endl;
*pc = 2;
cout << "Address of c (&c): " << &c << endl;
cout << "Value of c (c): " << c << endl << endl;
return 0;
}
Computer Programming 3/20/2021 6
▪ When c = 5; the value 5 is stored in the address of
variable c - 0x7fff5fbff8c.
▪ When pc = &c; the pointer pc holds the address of c -
0x7fff5fbff8c, and the expression (dereference operator)
*pc outputs the value stored in that address, 5.
▪ When c = 11; since the address pointer pc holds is the
same as c - 0x7fff5fbff8c, change in the value of c is also
reflected when the expression *pc is executed, which
now outputs 11.
▪ When *pc = 2; it changes the content of the address
stored by pc - 0x7fff5fbff8c. This is changed from 11 to 2.
So, when we print the value of c, the value is 2 as well.

Address of c (&c): 0x7fff5fbff80c


Value of c (c): 5

Address that pointer pc holds (pc): 0x7fff5fbff80c


Content of the address pointer pc holds (*pc): 5

Address pointer pc holds (pc): 0x7fff5fbff80c


Content of the address pointer pc holds (*pc): 11

Address of c (&c): 0x7fff5fbff80c


Value of c (c): 2
7
Computer Programming 3/20/2021
Suppose, you want pointer pc to point to the address of c. Then,

int *pc, c = 5;
pc=c; // Wrong! pc is address whereas, c is not an address.
*pc=&c; // Wrong! *pc is the value pointed by address, but &c is an address.

// In both of the above cases, pointer pc is not pointing to the address of c.

pc=&c; // Correct! pc is an address and, &c is also an address.


*pc=c; // Correct! *pc is the value pointed by address and, c is also a value.

// In both of the above cases, pointer pc is pointing to the address of c.

int* pc2 = &c; // Correct! pc2 is address pointer, and &c is also address.
int *pc3 = &c; // Correct! pc3 is address pointer, and &c is also address.

Computer Programming 3/20/2021 8


▪ Pointers are the variables that hold address.

▪ Not only can pointers store address of a single variable,


it can also store address of cells of an array.
▪ For example: int* ptr;
int a[5] = {2,4,6,8,10};
// &a[2] is the address of third element of a[5].
ptr = &a[2];
// ptr + 1 increases by the size of int (4B in 64-bit)
// ptr + 1 will point to the fourth element.
a[0] a[1] a[2] a[3] a[4] cout<< *ptr + 1; // displays: 8
2 4 6 8 10 char *ptr2 = &a; // char is 1B,
// ptr2 is pointing to a[0]
ptr2 ptr ptr + 1
cout<< *ptr2 + 4; // displays: 8
Computer Programming 3/20/2021 9
#include <iostream> Displaying address using arrays:
&arr[0] = 0x7fff5fbff880
using namespace std; &arr[1] = 0x7fff5fbff884
#define SIZE 3 &arr[2] = 0x7fff5fbff888

int main(){ Displaying address using pointers:


float arr[SIZE]; ptr + 0 = 0x7fff5fbff880
float *ptr; ptr + 1 = 0x7fff5fbff884
ptr + 2 = 0x7fff5fbff888
int i;
cout << "Displaying address using arrays: " << endl;
for (i = 0; i < SIZE; ++i)
cout << "&arr[" << i << "] = " << &arr[i] << endl;
// ptr = &arr[0]
ptr = arr;
cout<<"\nDisplaying address using pointers: "<< endl;
for (i = 0; i < SIZE; ++i)
cout << "ptr + " << i << " = "<< ptr + i << endl;
return 0;
} Computer Programming 3/20/2021 10

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy