$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
基礎情報処理演習(11)ポインタ
Search
自然言語処理研究室
November 28, 2013
Programming
0
7.6k
基礎情報処理演習(11)ポインタ
自然言語処理研究室
November 28, 2013
Tweet
Share
More Decks by 自然言語処理研究室
See All by 自然言語処理研究室
データサイエンス14_システム.pdf
jnlp
0
400
データサイエンス13_解析.pdf
jnlp
0
500
データサイエンス12_分類.pdf
jnlp
0
360
データサイエンス11_前処理.pdf
jnlp
0
480
Recurrent neural network based language model
jnlp
0
140
自然言語処理研究室 研究概要(2012年)
jnlp
0
150
自然言語処理研究室 研究概要(2013年)
jnlp
0
110
自然言語処理研究室 研究概要(2014年)
jnlp
0
130
自然言語処理研究室 研究概要(2015年)
jnlp
0
210
Other Decks in Programming
See All in Programming
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.9k
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
170
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.3k
AIコーディングエージェント(Manus)
kondai24
0
210
AIコーディングエージェント(Gemini)
kondai24
0
270
愛される翻訳の秘訣
kishikawakatsumi
3
350
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
160
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
300
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
210
Python札幌 LT資料
t3tra
7
1k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
410
これならできる!個人開発のすゝめ
tinykitten
PRO
0
130
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
30
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.4k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
150
Information Architects: The Missing Link in Design Systems
soysaucechin
0
720
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
170
The SEO Collaboration Effect
kristinabergwall1
0
310
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
[SF Ruby Conf 2025] Rails X
palkan
0
560
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
31
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Transcript
基礎情報処理演習 (11) ポインタ 山本和英 長岡技術科学大学 1
ポインタ 変数の住所を入れる変数 アドレス演算子 &x 変数 x の場所 間接演算子 *p ポインタ
p の指す変数の値 ・ アドレスとは「番地」=変数を記憶している場所のこと。 ・ ポインタとはアドレスを記憶した変数のこと。 ・ どこも指さないNULLポインタというものもある。 ・ 配列はポインタを使って書くことができる。 ・ 関数を使う時は、値を渡す方法とアドレスを渡す方法がある。 ポインタまとめ 2
int k = 3; k (int) 3 3
int k = 3; int *p; k (int) 3 p
ポインタ p を作る。 ここの int は、 ポインタが指す変数が int 型という意味。 4
int k = 3; int *p; p = &k; k
(int) 3 p ポインタ p に 編集 k の住所を代入する 5
int k = 3; int *p; p = &k; printf
(“%d”, *p); k (int) 3 p ポインタ p が指す変数(k) の値(*)、つまり3が表示される。 6
ポインタの作成 int* s; または int *s; ・ ここの int とは、 s
の指す先が int という意味で、ポインタ s が int という意味ではない。 ・ s の指す変数が double なら、 double *s; となる。 アドレスの代入 s = &t; ・ 変数t の住所(アドレス)を s に入れる。 ・ これによって、s を使って t を 操作できる。 ポインタの使い方 *s = 6; ・ ポインタ s が指す変数 t の値を 6 にする。つまり t = 6; と書くのと 同じ。よって、*s は t の別名と 考えてもよい。 7
配列名はポインタである int w[5]; w は w[0]を指す ポインタである。 配列はポインタ風にも書ける w[2] =
3; *(w+2) = 3; と書いても同じ 関数に配列を渡す goto_sub(&w[0]); goto_sub(w); と書いても同じ。 goto_sub(&w); ではないことに注意! 8
ポインタはいつ使うのか? いろいろありますが、授業では二つ紹介します。 1. 関数に配列を渡したい時 ポインタ一つで配列を渡せるので楽 2. 関数から二つ以上の値を受け取りたい時 受け取りたい変数のポインタを関数に渡せば 関数内でいじれるので便利 9
void function (int n1, int n2, int sum, int diff){
sum = n1 + n2; diff = n1 - n2; } void main(void){ ... a = 10; b = 5; function(a, b, wa, sa); } 動かないプログラム 10 sum と diff は 正しく計算できるが wa と sa には 反映されない
void function (int n1, int n2, int *sum, int *diff){
*sum = n1 + n2; *diff = n1 - n2; } void main(void){ ... a = 10; b = 5; function(a, b, &wa, &sa); } 改良版 11 Wa と sa のアドレスを 関数に渡すことで 変数の値が変更される
void set_number(int *vc, int no, int val){ int i; for
(i = 0; i< no; i++){ *(vc+i) = val; } } main(){ int ary[5]; set_number(ary, 5, 0); } 配列 ary のポインタと 二つの数字を渡す 関数に配列のポインタを渡す例 配列の初期化をする関数 vc[0]~vc[no-1]に val を代入 12 set_number(&ary[0], 5, 0); と書いてもよい vc[i] = val; と書いてもよい
おまけ: そう言えば... scanf_s (“%d”, &k); scanf_s で値を入力する際、&kのように変数名の 前に&をつけていたのは、 scanf_s 関数にkのアドレスを渡していたから
です。こうしないとscanf_s関数の中で変数kの値を 操作(scanf_sの場合は数値を代入)できないため、 k ではなく&kとする必要がありました。 13