I am trying to do an exercise from Stroustup's book. The task is to create an array of 7 ints, assign its address to another variable, then print out the array value and the address. My code is below.

int main ()
	int p0[7] = {0, 0, 0, 0, 0, 0, 0};
	int* p1 = &p0;

	for (int i = 0; i < 7; ++i) {
		p0[i] = 2 * (i + 1);

	for (int i = 0; i < 10; ++i) {
		cout <<"Array place " << i << " has value " << p0[i] << ", and its address is " << p1 << ".\n";

        return 0;

My problem is that I get a compile error on line 4 saying that "a value of type int(*)[7] cannot be used to initialize an entity of type int*". I don't understand that message nor how to correct the problem. Thanks in advance for your help.

7 Years
Discussion Span
Last Post by Nathaniel10

Thank you, guys. I tried

int* p1 = &p0[0];

and it worked fine. Another poster explained to me that I had defined an array in line 3 (p0[7]) but set a pointer to an int in line 4 (&p0). I had to add the subscript to turm p0 back into an array.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.