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

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

1
2
3
4
5
6
7
8
9
10
int main(void){
    int a;
    a = 10;
 
    int *pa; // *でポインタの宣言
    pa = &a; // &aでaのアドレスを入れる
    printf("%d\n", *pa); //paに入っているアドレスの値を呼び出す
 
    return 0;
}

$ ./dev
10

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

1
2
3
4
5
6
7
8
9
int main(void){
    char s[] = "hello";
 
    char *ps;
    ps = &s[3];
    printf("%c\n", *ps);
 
    return 0;
}