slide1
Download
Skip this Video
Download Presentation
C++

Loading in 2 Seconds...

play fullscreen
1 / 30

C++ - PowerPoint PPT Presentation


  • 170 Views
  • Uploaded on

C++. Lecture 3 Monday, 14 July 2003. Arrays, Pointers, and Strings. Use of array in C++, multi-dimensional array, array argument passing Pointers Relation between pointer and array String, string processing functions. Arrays. Declaration of an array int c[12]; or const int max = 12;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' C++' - olwen


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

C++

Lecture 3

Monday, 14 July 2003

arrays pointers and strings
Arrays, Pointers, and Strings
  • Use of array in C++, multi-dimensional array, array argument passing
  • Pointers
  • Relation between pointer and array
  • String, string processing functions
arrays
Arrays
  • Declaration of an array

int c[12];

  • or

const int max = 12;

int c[max];

  • References to an array c[ ]

c[0], c[1], …, c[max-1]

array initialization
Array Initialization

int n[5] = {1, 2, 3, 4, 5};

  • or

int n[ ] = {1, ,2, 3, 4, 5};

  • n[0], n[1], …, n[4] are valid references

C.f. Fig. 4.3

array of characters string
Array of Characters (String)

char string1[20];

char string2[ ] = "string literal";

  • Individual array element is a character

string2[3] = \'y\';

C.f. Fig. 4.12

passing array
Passing Array
  • Passing an array name is equivalent to passing the address of the array

int a[5]; // declare array

func(a); // use function

void func(int a[ ]) // define function

{

}

C.f Fig. 4.14

array name is a constant address
Array Name is a constant Address

int a[100];

a is the address of a[0],

a+k is the address of a[k].

a–1, or a+100, is also a valid address; C/C++ cannot check array index out of bound error during compile or run time.

multiple subscripted arrays
Multiple-Subscripted Arrays

int a[2][5];

  • A 2 by 5 array.
  • Initialization

int a[2][5] = { {0,1,2,3,4},

{0,2,4,6,8} };

  • Row major convention in C/C++
argument passing for multi dimensional array
Argument Passing for Multi-Dimensional Array

int a[3][5];

func(a);

  • or

func(a+1);

void func(int b[ ][5])

{ ...

C.f Fig. 4.22

pointers
Pointers
  • Pointer value holds the address of a variable.
  • Pointers are also typed, i.e, pointer to int is considered different from pointer to double.
  • E.g.,

int *p;

double *fpt;

declaration of pointer variables
Declaration of Pointer Variables

int *p; // a pointer to int

int c; // an int variable

p = &c; // address of c is given to p

  • The value of variable p is the address of c.
  • The value at the address stored in p is the value of c.

*p = 2; // dereferencing

address operator
Address Operator &

int c, *p, a[100];

p = &c; // address of c

p = a; // address of array

p = &a[0]; // same as above

dereferencing operator
Dereferencing Operator *

int *p, c;

c = 1;

p = &c; // let p point to c

j = *p; // j gets 1,

operator precedence and associativity
Operator Precedence and Associativity

( ) [ ] left to right highest

++, --, &, * right to left unary

* / % left to right multiply

+ , - left to right additive

<<, >> left to right insertion

<, <=, >, >= left to right relational

==, != left to right equality

, left to right comma

left to right association
Left to Right Association
  • a + b + c means (a+b) + c
  • Precedence
  • a + b*c means a + (b*c)
adding parentheses to show the order of evaluation
Adding Parentheses ( … ) to show the order of evaluation
  • b += x = y - k*a[ j ] && 3 | u < v--;
  • See Appendix A, page 1214 for the complete "Operator Precedence Chart".
answer
Answer

b += (x = ((y - (k*(a[ j ]))) && (3 | (u < (v--)))));

call by reference with pointer
Call-by-Reference with Pointer
  • Passing a pointer can modify the value in calling program.

int c;

cube_it(&c);

void cube_it(int *p)

{ ...

C.f. Fig.5.7

pointer to const data and const pointers
Pointer to const data and const Pointers

void f(const int *p);

  • The data pointed by p cannot be modified.

int * const p = &x; // p always

// pointing to x

const int *const p = &x; // p always

// points to x, x cannot change

relationship between pointers and arrays
Relationship between Pointers and Arrays
  • An expression of

*(a + k)

  • is considered totally equivalent to

a[k].

  • E.g., a[0] is the same as *a.
multi dimensional array
Multi-Dimensional Array
  • In the declaration

int a[3][7];

we can view a as pointer to array of a[0], a[1], a[2], which themselves are pointers to int array a[i][j].

  • **a is the same as a[0][0].
pointer of pointers
Pointer of Pointers

a

a[2][0] a[2][1]

a[0] a[1] a[2]

a[1][0] a[1][1] ...

a[0][0] a[0][1] a[0][2] ...

arrays of pointers
Arrays of Pointers

char *suit[4] = { "Hearts", "Diamonds", "Clubs", "Spade"};

  • suit[0][0] refers to \'H\',
  • suit[3][4] refers to \'e\' in "Spade",
  • suit[2][20] is an illegal access.
function pointer
Function Pointer

void (*f)(int);

  • f is a pointer to a function of the form void g(int).
  • Function names are like address, e.g,

f = g;

(*f)(5); // call the function

fundamentals of characters and strings
Fundamentals of Characters and Strings

char c, s[10]; // declare variables

c = \'a\'; // can be used as small int

s = "John Q"; // don\'t work, why?

  • You must do

s[0] = \'J\';

s[1] = \'o\';

s[2] = \'h\'; // etc

  • Or use string copy function
string initialization
String Initialization

char color[ ] = "blue";

char *colorPtr = "blue";

char color[ ] = {\'b\', \'l\', \'u\', \'e\', \'\0\'};

  • What is the difference between the array color and the pointer colorPtr?
read a string
Read a String

char word[20];

cin >> word; // cause problem

cin >> setw(20) >> word; // OK

  • Read an entire line

char sentence[80];

cin.getline(sentence, 80);

string processing functions string h
String Processing Functions <string.h>

char *strcpy(char *t, const char *s);

char *strncpy(char *t, const char *s, size_t n);

char *strcat(char *t, const char *s);

int strcmp(const char *s, const char *t);

size_t strlen(const char *s);

string processing
String Processing
  • Examples from Fig.5.30 and 5.31.

C.f. Fig 5.30 and 5.31

exercise 4 29
Exercise 4.29
  • (The Sieve of Eratosthenes) A prime integer is any integer that is evenly divisible only by itself and 1. Use the sieve method to find prime.
    • Initialize a[1000] all to 1 (for true).
    • Starting from 2, 3, …, k, ..., set array indices which are all multiple of k to 0,
    • print the nonzero indices.
ad