ポインタ
ポインタ(pointer)
たいだいC言語、C++で使われるポインタについて
ポインタと言われると一体何のことを言われているかイメージが湧きずらいので、ポインタ変数、ポインタ型と限定する呼び方がいいのかもしれない
色々見た結果、概念の区別のために以下のように分けた方が良い気がする
アドレスにアクセスする仕組みの方のポインタ
アドレスを格納する変数のポインタ変数
型のポインタ型
ポインタ(pointer)
ポインタ変数(pointer variable)
アドレスを記憶するための変数
アドレスはメモリ上の番地のこと
int *p;の変数pはポインタ変数
ポインタ型(pointer type)
ポインタ変数の型について言いたいときはポインタ型?
変数宣言時にint *x、long *xというような*付きの宣言をしたものポインタ型
$ \underbrace{\text{int *}}_{\text{ポインタ型}} \underbrace{p}_{\text{ポインタ変数}};
ポインタの大まかな使い方
code:pointer.c
void sample1() {
int x = 10;
// ポインタ変数
// 記法は型名 *変数名
// "*"をつけるとポインタ型の変数にする
int *p;
// xのアドレスを代入
// "&"はアドレス演算子で変数のアドレスを取得できる
p = &x;
// pの参照先のxの値を書き換える
// "*"は関節演算子
*p = 15;
printf("x = %d\n", x);
// %pでアドレスを16進数で表示
// "&"を使用してアドレスのprintfに渡す
printf("&x = %p\n", &x);
printf("p = %p\n", p);
// "*"を使用してアドレスの指し示す値をprintfに渡す
printf("*p = %d\n", *p);
// イメージとしてはアドレスからアドレスにキャストするので結果は変わらない
printf("&p = %p\n", &p);
}
int main() {
sapmle1();
}
code:memo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 398 0 398 0 0 563 0 --:--:-- --:--:-- --:--:-- 562
x = 15
&x = 0x7fff20790dac
p = 0x7fff20790dac
*p = 15
&p = 0x7fff20790db0
使うときに関わるページ関連
その他の概念
確認用
Q. ポインタ
Q. ポインタ型
Q. ポインタを使うと何ができるか
Q. なぜポインタがあるか
Q. ダブルポインタ
関連
参考
メモ
調査用
/pogi-log/Wikipedia.icon
/pogi-log/Wikipedia.icon