C言語のポインタとメモリ空間1

ポインタとはメモリのアドレスを使って操作をすること
&: アドレス演算子
*: アドレスを示す(間接演算子)
宣言時も*を使う

int main(void){
	int a;
	a = 10;

	int *pa; // *でポインタの宣言
	pa = &a; // &aでaのアドレスを入れる
	printf("%d\n", *pa); //paに入っているアドレスの値を呼び出す

	return 0;
}

$ ./dev
10

なんだこれは? 要は「*」でポインタを宣言した後に、「&」でアドレスを入れて、「*」でアドレスを呼び出してるってことか。
char型でも同じようchar型のポインタを割り当ててできるが、どう活用するかようわからん。

int main(void){
	char s[] = "hello";

	char *ps;
	ps = &s[3];
	printf("%c\n", *ps);

	return 0;
}