 Okay, so let's say we have int A, and I'm going to assign int A to the value 555, and then we have int, this is a pointer to an integer, and then we're going to call this P, and we're going to assign this the address of A. Okay, so what are we doing here? Basically what we're doing is we are defining a new variable A, and this A is of type int. Then what we're doing is we are creating a new pointer, and we're assigning the address of A to be the value which is going to be stored inside of this pointer, and don't forget this is a pointer to an integer. Now what we can do is we can actually print out the value that's stored in A by accessing P, and I'm going to show you how to do that. So we can say C out, and then we actually have to use this operator called the dereference operator. It's a little confusing because we use the same character here to define a pointer to an integer, but we also dereference here with the C out. And just to go over what we're doing again, so what we're doing is we're creating a new integer, and we're calling it A, and we're assigning it the value 555. Then what we're doing is we're creating a pointer to an integer, and we're assigning to this pointer the address of A, and here what we're doing is we're actually going to that address, and we're getting the value that is stored at that address. So we're going to A, we're going to the address of A, and we're saying, okay, what is the value at this address? And we're actually printing it out on this line. So let's actually compile this and see how this works. Okay, so as you can see, we got the value 555 back, and that's good, that's exactly what I expected. But you know what you can actually do? What we can also do here is we can create a pointer that points to a pointer. So we can say int, and then we give it these two asterisks symbols, and basically what these tell us is the first one tells us that this is a pointer to a pointer of type int. So again, to read this to you again, the way I read this is this is a pointer to a pointer of type int. And we're going to give it a name. So I'm going to say this is P, and what we can do here is we can store the address of P. So don't forget pointer, the value that's stored in pointer is an address. But this pointer has its own address as well. So what we can do is we can reference P and store its address instead of this variable. Then what we can do is we can actually dereference this variable. But here's the problem. If we dereference this variable, what we're going to get is we're going to get the value which is inside of this variable, which is P. And the value stored in this, the variable P, is the address of A, right? And because of that, we're not going to get the value of A, but we're going to get the address of A. And let me just show you how that works. So as you can see, we get some gibberish. This is the address of A in memory, supposedly. Now, if we actually dereference this again, save this and write, and then we compile this, and then we can actually run it again. We see that we're getting back the value which is inside of A. And we can just keep doing this like infinitely. The way that these data tapes work in C++ is essentially you can just keep making values. So we can just keep making pointers that point to other pointers. So for example, we can say this pointer, we're going to make another one that points to a pointer to a pointer of type int. And it's going to call this, and I'm going to assign it to the address of the previous pointer. And if we try to print this out, we try to print this out, we are going to get basically, we have to dereference this three times to get the value that's stored in A. So if we write quit, and then if we compile this, and then we run this again, we get 5555 back again. Okay, thanks for watching. And I hope you enjoyed this video, and I'll see you later.