Pointers, arrays, and datatypes in C++

To run a C++ program:

The example illustrates C++ type system (or a lack of one?)


#include <iostream>  // need this to use the I/O system 
using namespace std; // telling the compiler to use namespace "std",
// where the C++ library is declared.

int main()
{
  int n = 5, m = 3;
  int *p = &n; // p is a pointer to int, points to n
  int *q = &m; // q is a pointer to int, points to m

  *p = 6; // changing n via p
  cout << "n = " << n << endl; // printing n
  q = p; // copied the address from p to q
  cout << "*q = " << *q << endl; // printing what q points to

  m = 6;
  q = &m;

  cout << "Below 1 represents true, 0 represents false " << endl;
  cout << "m == n: " << (m == n) << endl;
  cout << "*p == *q: " << (*p == *q) << endl;
  cout << "p == q: " << (p == q) << endl;

  // Booleans are not a separate type in C++,
  // they are integers: 0 = false, any other value means true
  // Boolean operations are applicable to integers (and chars)
  cout << "true = " << true << endl;
  cout << "false = " << false << endl;
  if (2) cout << "2 means true" << endl;
  if (!0) cout << "0 means false" << endl;
  if ('A') cout << "characters with non-zero ASCII code are true, too" << endl;
  if (! '\0') cout << "end of string character '\\0' means false" << endl;
  cout << (('?' - 6) || !89) << " = ('?' - 6) || !89 - Huh? That's an integer, too?" << endl;

  const int size = 3;
  int A[size];
  // array elements are not initialized
  cout << "Printing uninitialized array..." << endl;
  for (int i = 0; i < size; ++i) {
    cout << A[i] << endl;
  }

  // going through the array using pointers
  for (p = A; p < A + size; p++) {
    *p = 0;
  }

  cout << "Printing the array initialized to 0s..." << endl;
  for (int i = 0; i < size; i++) {
    cout << A[i] << endl;
  }

  // All of these are the same:
  cout << "A[2] = " << A[2] << endl;
  cout << "*(A + 2) = " << *(A + 2) << endl;
  cout << "2[A] = " << 2[A] << endl;

  return 0;

}



CSci 4651 course.

The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.