Run the following program and make sure that you can explain the output, #include using namespace std; int main() {int b[3][2]; cout<

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Explain step by step 

```cpp
Run the following program and make sure that you can explain the output,

#include <iostream>
using namespace std;

int main()
{
    int b[3][2];

    cout << sizeof(b) << endl;                 // -> what will be printed on each line?
    cout << sizeof(b + 0) << endl;
    cout << sizeof(*(b + 0)) << endl;

    cout << " b is: " << b << endl;
    cout << " b+1 is: " << b + 1 << endl;
    cout << " &b is: " << &b << endl;
    cout << " &b+1 is: " << &b + 1 << endl;

    return 0;
}
```

### Explanation:
1. `sizeof(b)`: Returns the total size of the 2D array `b`. Since `b` is a 3x2 array and assuming each `int` is 4 bytes, this would be `3 * 2 * 4 = 24` bytes.

2. `sizeof(b + 0)`: Returns the size of a pointer to the first element of `b`. This is typically the size of a pointer on the system (e.g., 8 bytes on a 64-bit system).

3. `sizeof(*(b + 0))`: Returns the size of the first sub-array of `b`, which is an array of 2 integers (2 * 4 = 8 bytes).

4. `" b is: " << b`: Prints the address of the first element of the array `b`.

5. `" b+1 is: " << b + 1`: Prints the address of the second row of `b`. Incrementing `b` skips over an entire row (2 integers).

6. `" &b is: " << &b`: Prints the address of the entire array `b`.

7. `" &b+1 is: " << &b + 1`: Prints the address one past the end of the entire array `b`. Incrementing `&b` skips over the whole 2D array, moving the pointer by `sizeof(b)` bytes.
Transcribed Image Text:```cpp Run the following program and make sure that you can explain the output, #include <iostream> using namespace std; int main() { int b[3][2]; cout << sizeof(b) << endl; // -> what will be printed on each line? cout << sizeof(b + 0) << endl; cout << sizeof(*(b + 0)) << endl; cout << " b is: " << b << endl; cout << " b+1 is: " << b + 1 << endl; cout << " &b is: " << &b << endl; cout << " &b+1 is: " << &b + 1 << endl; return 0; } ``` ### Explanation: 1. `sizeof(b)`: Returns the total size of the 2D array `b`. Since `b` is a 3x2 array and assuming each `int` is 4 bytes, this would be `3 * 2 * 4 = 24` bytes. 2. `sizeof(b + 0)`: Returns the size of a pointer to the first element of `b`. This is typically the size of a pointer on the system (e.g., 8 bytes on a 64-bit system). 3. `sizeof(*(b + 0))`: Returns the size of the first sub-array of `b`, which is an array of 2 integers (2 * 4 = 8 bytes). 4. `" b is: " << b`: Prints the address of the first element of the array `b`. 5. `" b+1 is: " << b + 1`: Prints the address of the second row of `b`. Incrementing `b` skips over an entire row (2 integers). 6. `" &b is: " << &b`: Prints the address of the entire array `b`. 7. `" &b+1 is: " << &b + 1`: Prints the address one past the end of the entire array `b`. Incrementing `&b` skips over the whole 2D array, moving the pointer by `sizeof(b)` bytes.
Expert Solution
steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Array
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education