ポインタ
ポインタ(pointer)
だいたいC言語、C++で使われるポインタについて
ポインタと言われると一体何のことを言われているかイメージが湧きずらいので、ポインタ変数、ポインタ値、ポインタ型と限定する呼び方がいいのかもしれない
色々見た結果、概念の区別のために以下のように分けた方が良い気がする
アドレスを格納する変数のポインタ変数
ポインタ変数に格納されている値のポインタ値
型のポインタ型
ポインタ変数(pointer variable)
アドレスを記憶するための変数
アドレスはメモリ上の番地のこと
int *p;の変数pはポインタ変数
ポインタ値(pointer value)
何かを指している値?
ポインタ型(pointer type)
ポインタ変数の型について言いたいときはポインタ型?
変数宣言時にint *x、long *xというような*付きの宣言をしたものポインタ型
$ \underbrace{\text{int *}}_{\text{ポインタ型}} \underbrace{p}_{\text{ポインタ変数}};
ポインタの大まかな使い方
code:pointer.c
#include <stdio.h>
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();
}
$ curl -O https://scrapbox.io/api/code/pogi-log/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF/pointer.c && gcc -Wall -Wextra pointer.c && ./a.out
code:memo
curl -O https://scrapbox.io/api/code/pogi-log/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF/pointer.c && gcc -Wall -Wextra pointer.c && ./a.out
% 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
使うときに関わるページ関連
Cのアドレス演算子(&)、間接演算子(*)
C言語 配列
C言語 文字列操作
ポインタから整数への変換、整数からポインタへの変換
その他の概念
関数ポインタ
スマートポインタ
ダングリングポインタ
参照渡し
確認用
Q. ポインタとは
Q. ポインタ変数
Q. ポインタ型
Q. ポインタ値
Q. ポインタを使うと何ができるか
Q. なぜポインタがあるか、必要か
Q. ダブルポインタ
関連
線形メモリ
ワード(メモリ)
アドレス空間
C言語 配列
C規格
参考
アドレスを記憶する変数 - 苦しんで覚えるC言語
ポインタ変数を使ってみる - 苦しんで覚えるC言語
ポインタ - 本物のC
メモ
ポインタ(pointer)
ポインタ - 初心者のためのポイント学習C言語
C言語のポインタ構文のつまづきどころ #C - Qiita
POINTER
ほぷしぃ-納得C言語-【第13回】ポインタ
メモリの仕組み - 苦しんで覚えるC言語
『Modern C』
C99の規格書(draft)
ISO/IEC 9899:TC2
ISO/IEC 9899:TC3
調査用
/pogi-log/Google.icon ポインタ(日)
/pogi-log/Google.icon pointer(英)
/pogi-log/Wikipedia.icon
ポインタ - Wikipedia(日)
ポインタ(検索) - Wikipedia(日)
/pogi-log/Wikipedia.icon
pointer - Wikipedia(英)
pointer(検索) - Wikipedia(英)
#メモリ
#C/C++