MISW.github.io

#include<stdio.h>

int main(){
	
	int a = 3;
	
	int *b;
	
	b = &a;
	
	printf("%d\n",b);
	printf("%d\n",*b);
	
	return 0;
}

以下解説

まず、int a = 3;で変数のaに3を代入。 その後

int *b;  

これはint型のポインタを入れる変数を宣言という意味です。ポインタって何???って言うと変数の住所、置き場所みたいな感じです。例えば今回a = 3でaという変数が作られましたが、そのaってメモリのどこにいるんだろう?っていうのがポインタです。
そして、

b = &a;

&aっていうのがaのポインタ、住所を指し示し、それをbに代入する感じです。

printf("%d\n",b);

にて、aの住所を表示。

printf("%d\n",*b);

この*bはどういう意味かというと、今回bにはaの住所、ポインタが入っていて、 その住所には実際にはなんの数があるの?って言うことを指します。よって前者は完全ランダム、後者は3が表示されるはずです。
実際難しい分野ですが一緒に頑張って行きましょう^q^