error: invalid type argument of ‘unary *’ (have ‘int’)
Since c
is holding the address of an integer pointer, its type should be int**
:
int **c;
c = &a;
The entire program becomes:
#include <stdio.h>
int main(){
int b=10;
int *a;
a=&b;
int **c;
c=&a;
printf("%d",(**c)); //successfully prints 10
return 0;
}
Barebones C program to produce the above error:
#include <iostream>
using namespace std;
int main(){
char *p;
*p = 'c';
cout << *p[0];
//error: invalid type argument of `unary *'
//peeking too deeply into p, that's a paddlin.
cout << **p;
//error: invalid type argument of `unary *'
//peeking too deeply into p, you better believe that's a paddlin.
}
ELI5:
The master puts a shiny round stone inside a small box and gives it to a student. The master says: "Open the box and remove the stone". The student does so.
Then the master says: "Now open the stone and remove the stone". The student said: "I can't open a stone".
The student was then enlightened.