Pointer of pointer

sir when we use pointers we do
int *ptr= new int [r]
but for double pointers why we used
arr=new int *[r]; in line 7

i mean we use * for derefrencing the address but [r] is not the address , it is the size only.

Hello @tejuschaturvedi0 there is not code in the link which you have shared.
please share it again by saving.

@tejuschaturvedi0 please confirm you have just doubt in how we are initialising 2 d arrays using this right?