Question: What's wrong here with pointing a pointer to another pointer?

```
#include<stdio.h>

int main()
{
    int a[2]={7,8};

    int **k;

    k=&a;

    printf("%d",**k);

    return 0;
}

```

The array name in a pointer to the base address I guess so what's wrong here when I am trying to point to it with a double pointer?

Answer: 
You can have single pointer to point your the first location of your array and print it. I don't see a need for a double pointer. 

The assignment 

```
int *k = a;

```

The pointer k is made to point to the first location of the array which is given by `a`.
A double pointer is used to point to a pointer and here `a` is not a pointer.

```
#include<stdio.h>

int main()
{
    int a[2]={7,8};

    int *k;

    k=&a;

    printf("%d\n",*k);
    printf("%d\n",*(k+1));

    return 0;
}

```
Under C99 or above you can make use of [compound literals](http://www.9wy.net/onlinebook/CPrimerPlus5/ch10lev1sec9.html):

```
int **k;

k = &((int *){a});

```

But as pointed out by Gopi, in this case a single pointer is enough.