Suche senden
Hochladen
About Pointer
•
0 gefällt mir
•
745 views
Sho IIZUKA
Folgen
当スライドには過激な主張が含まれています。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 36
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Unity + C#講座①
Unity + C#講座①
Yu Yu
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Pythonのデータ型をもっと理解する
Pythonのデータ型をもっと理解する
malo 21st
03 var array_flow_func
03 var array_flow_func
文樹 高橋
闇魔術を触ってみた
闇魔術を触ってみた
Satoshi Sato
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
静的型付け言語Python
静的型付け言語Python
kiki utagawa
Empfohlen
Unity + C#講座①
Unity + C#講座①
Yu Yu
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Pythonのデータ型をもっと理解する
Pythonのデータ型をもっと理解する
malo 21st
03 var array_flow_func
03 var array_flow_func
文樹 高橋
闇魔術を触ってみた
闇魔術を触ってみた
Satoshi Sato
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
静的型付け言語Python
静的型付け言語Python
kiki utagawa
Python 学習教材
Python 学習教材
Jun MITANI
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
Python 学習教材 (300~309ページ)
Python 学習教材 (300~309ページ)
Jun MITANI
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
Nobuhisa Koizumi
Constexprとtemplateでコンパイル時にfizz buzz
Constexprとtemplateでコンパイル時にfizz buzz
京大 マイコンクラブ
Boost Fusion Library
Boost Fusion Library
Akira Takahashi
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
Jun MITANI
C言語の宣言読み方講座
C言語の宣言読み方講座
tetra_cat
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Tokyo Sky Tree
Tokyo Sky Tree
Takahiro Sugiura
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
Tomo Mizoe
Scalaのオブジェクトの話
Scalaのオブジェクトの話
Yasuyuki Maeda
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
yoshihikoozaki5
20170131 python3 6 PEP526
20170131 python3 6 PEP526
masahitojp
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIteratee
pocketberserker
Tensor flowを使った キュウリの仕分け あれこれ
Tensor flowを使った キュウリの仕分け あれこれ
Makoto Koike
Effective python#28
Effective python#28
bontakun
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
佑 小田垣佑
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
Daiki Mogmet Ito
Weitere ähnliche Inhalte
Was ist angesagt?
Python 学習教材
Python 学習教材
Jun MITANI
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
Python 学習教材 (300~309ページ)
Python 学習教材 (300~309ページ)
Jun MITANI
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
Nobuhisa Koizumi
Constexprとtemplateでコンパイル時にfizz buzz
Constexprとtemplateでコンパイル時にfizz buzz
京大 マイコンクラブ
Boost Fusion Library
Boost Fusion Library
Akira Takahashi
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
Jun MITANI
C言語の宣言読み方講座
C言語の宣言読み方講座
tetra_cat
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Tokyo Sky Tree
Tokyo Sky Tree
Takahiro Sugiura
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
Tomo Mizoe
Scalaのオブジェクトの話
Scalaのオブジェクトの話
Yasuyuki Maeda
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
yoshihikoozaki5
20170131 python3 6 PEP526
20170131 python3 6 PEP526
masahitojp
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIteratee
pocketberserker
Tensor flowを使った キュウリの仕分け あれこれ
Tensor flowを使った キュウリの仕分け あれこれ
Makoto Koike
Effective python#28
Effective python#28
bontakun
Was ist angesagt?
(20)
Python 学習教材
Python 学習教材
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
Python 学習教材 (300~309ページ)
Python 学習教材 (300~309ページ)
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
Constexprとtemplateでコンパイル時にfizz buzz
Constexprとtemplateでコンパイル時にfizz buzz
Boost Fusion Library
Boost Fusion Library
Python 学習教材 (~299ページ)
Python 学習教材 (~299ページ)
C言語の宣言読み方講座
C言語の宣言読み方講座
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Tokyo Sky Tree
Tokyo Sky Tree
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
Scalaのオブジェクトの話
Scalaのオブジェクトの話
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
20170131 python3 6 PEP526
20170131 python3 6 PEP526
FP習熟度レベルとFSharpxのIteratee
FP習熟度レベルとFSharpxのIteratee
Tensor flowを使った キュウリの仕分け あれこれ
Tensor flowを使った キュウリの仕分け あれこれ
Effective python#28
Effective python#28
Ähnlich wie About Pointer
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
佑 小田垣佑
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
Daiki Mogmet Ito
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
Hello world make
Hello world make
mitsu1119
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
Eric Sartre
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
聡 中川
C言語講習会1
C言語講習会1
odenhadengaku
はじめての「R」
はじめての「R」
Masahiro Hayashi
実験心理学者のためのPython
実験心理学者のためのPython
Masataka Miyoshi
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Excel VBAという諸刃の剣を真っすぐに扱うために
Excel VBAという諸刃の剣を真っすぐに扱うために
Takumi Nasuno
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
Pytorch 01
Pytorch 01
konbu_wakayama
全脳関西編(松尾)
全脳関西編(松尾)
Yutaka Matsuo
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)
nomuken
たのしい関数型
たのしい関数型
Shinichi Kozake
T4使ってみた
T4使ってみた
Ryota Murohoshi
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Taketo Sano
Oocon2020 presentation slide @kozukorio
Oocon2020 presentation slide @kozukorio
Hirokazu Kobayashi
Ähnlich wie About Pointer
(20)
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
Hello world make
Hello world make
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
C言語講習会1
C言語講習会1
はじめての「R」
はじめての「R」
実験心理学者のためのPython
実験心理学者のためのPython
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Excel VBAという諸刃の剣を真っすぐに扱うために
Excel VBAという諸刃の剣を真っすぐに扱うために
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Pytorch 01
Pytorch 01
全脳関西編(松尾)
全脳関西編(松尾)
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)
たのしい関数型
たのしい関数型
T4使ってみた
T4使ってみた
中3女子でもわかる constexpr
中3女子でもわかる constexpr
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Oocon2020 presentation slide @kozukorio
Oocon2020 presentation slide @kozukorio
Mehr von Sho IIZUKA
HDDの返品保証を使ってみた
HDDの返品保証を使ってみた
Sho IIZUKA
FM-indexによる全文検索
FM-indexによる全文検索
Sho IIZUKA
円と円の外接線の求め方
円と円の外接線の求め方
Sho IIZUKA
円と円の交点の求め方
円と円の交点の求め方
Sho IIZUKA
勝手に解説 TopCoder Marathon Match 82 ColorLinker
勝手に解説 TopCoder Marathon Match 82 ColorLinker
Sho IIZUKA
grepについて
grepについて
Sho IIZUKA
Mehr von Sho IIZUKA
(6)
HDDの返品保証を使ってみた
HDDの返品保証を使ってみた
FM-indexによる全文検索
FM-indexによる全文検索
円と円の外接線の求め方
円と円の外接線の求め方
円と円の交点の求め方
円と円の交点の求め方
勝手に解説 TopCoder Marathon Match 82 ColorLinker
勝手に解説 TopCoder Marathon Match 82 ColorLinker
grepについて
grepについて
Kürzlich hochgeladen
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Kürzlich hochgeladen
(10)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
About Pointer
1.
ポインタの話をしよう ロボ研 非定期勉強会
2.
本題に入る前に • 多くの人がポインタで挫折しています • 「ポインタを理解してしまった人」は 「ポインタを勘違いしている」状態を思い出 すことができません •
どのような勘違いをしていたのか 教えてください(ブログのネタになります)
3.
今日話すこと 1. ポインタって本当に使えないとダメ? 2. 【部内の】ポインタについて思うこと【反応】 3.
これだけは使えるようになってください
4.
1. ポインタって本当に 使えないとダメ?
5.
まず結論から • マスターしなくてもだいたい大丈夫です • ただし「その手の業界」に行く人は マスターしてください
6.
ポインタは何のためにあるか → メモリを直接扱うためです
7.
なぜメモリを直接扱う必要が? • 組み込み界隈の人… デバイスの状態の読み書きをメモリアドレスを指定 して行います (Memory
Mapped IO) • OS界隈の人… ソフトウェアが使用するメモリの 割り当てを管理する必要があります • メモリの番地を指定してゴリゴリやる機能が必要
8.
なんでそんなヤバい機能が? ほとんどの人にはいらなくね? → ググってみましょう 「もともとシステムの記述用に開発された」 (引用元:e-Words)
9.
要するに… • ポインタは「プログラミングを楽にする」 といった理想的な目的で導入されているわけ ではありません(お察しください) • 多くの人にとって、ポインタの機能はオーバー スペックです •
C言語は決して万人向きではない
10.
何のためにC言語を使うのですか • 極端な話、「ポインタを使うためにC言語を使 う」であるべき • 「C言語はプログラミングの基本だから最初に マスターするべき」的な思想はヤバいと 思っています
11.
2. 【部内の】ポインタについて 思うこと【反応】
12.
これは何? ポインタに関する勘違いのあるあるネタを みんなで共有するコーナーです ! 自由に発言してください
13.
よく参考書で見るコード(1) int x, *p; x
= 1; p = &x; *p = 2; printf("x = %dn", x);
14.
ありがちな反応(1) 「何がうれしいのか分かりません」
15.
よく参考書で見るコード(2) void swap(int *x,
int *y) { int tmp = *x; *x = *y; *y = tmp; }
16.
ありがちな反応(2) そもそも void swap(int x,
int y) { int tmp = x; x = y; y = tmp; } で動くと思っていたので……
17.
(1)に関して • 例が悪いです • メリットを感じられなくても、 何も問題ありません
18.
(2)に関して • 関数呼び出しとスタックに関する話をする必 要があります • スライド作るのが面倒でした •
ホワイトボードで話をします
19.
考えられる反応 「ぜんぶ参照渡しにしたら良いんじゃないん ですか?」 ! → そういう言語もあります。 最近の主流は「だいたい参照渡し」
20.
3. これだけは使えるように なってください
21.
結局ポインタはどう使えば… • 代表的な利用パターンを4つに分類しました • この4つが使いこなせれば、基本的に困るこ とは無いはず •
使っているうちに、他の場面でも対応できる ようになるはず
22.
4つの利用パターン 1. 配列or構造体を入力として関数に渡す 2. 配列or構造体を出力として関数に渡す 3.
配列or構造体を入出力として関数に渡す 4. 複数の値を関数から取得
23.
1. 配列or構造体を 入力として関数に渡す // C言語標準ライブラリ int
puts(const char *s); size_t strlen(const char *s); int strcmp(const char *s1, const char *s2); ! // Win32API ATOM RegisterClassEX(const WNDCLASSEX *lpwcx);
24.
2. 配列or構造体を 出力として関数に渡す // C言語標準ライブラリ char
*gets(char *s); void memset(void *s, int c, size_t n); void strcpy(char *s1, const char *s2); ! // Win32API BOOL GetWindowRect(HWND hWnd, RECT *lpRect); BOOL GetCursorPos(POINT *lpPOINT);
25.
3. 配列or構造体を 入出力として関数に渡す // C言語標準ライブラリ void
qsort(void *data, size_t num_memb, size_t elem_size, int (*cmp)(const void *, const void *));
26.
4. 複数の値を関数から取得 // C言語標準ライブラリ int
scanf(...);
27.
演習のお時間です • 問題をいくつか作りました • 関数を使う問題 •
関数を作る問題 • どのパターンに当てはまるのかも 答えてください
28.
演習問題 配列の最大値を返す関数 int max_element(const int
*data, int n); があるとします。 ! int xs[] = { 1, 1, 4, 5, 1, 4 }; の最大値を求める処理を書いてください。
29.
演習問題 配列の中に特定の値xがいくつ含まれているか数える関数countを実装してください。 ! int x =
4; int xs[] = { 1, 1, 4, 5, 1, 4 }; int k; ! k = count(xs, /* 配列の要素数 = */ 6, x); ! みたいに呼び出したいです。
30.
演習問題 配列に連番を代入する関数 void iota(int *data,
int n); があるとします。 ! int xs[5]; の中身を { 0, 1, 2, 3, 4 }; にしてください。
31.
演習問題 配列を特定の値xで埋める関数fillを定義してください。 ! int x =
72; int xs[10]; ! fill(xs, /* 配列の要素数 = */ 10, x); ! みたいに呼び出したいです。
32.
演習問題 渡された文字列に含まれるアルファベットをすべて大文字に変更する関数 to_upper_stringを定義してください。 ! char s[] =
"u-hyogo"; to_upper_string(s); puts(s); // U-HYOGO ! 1文字がアルファベットかどうかの判定はint isalpha(int c) アルファベット1文字を大文字に変換するにはint toupper(int c) を使うと便利です。 ! ※isalphaやtoupperはctype.hに含まれています。
33.
演習問題 配列の連続する重複要素を消してくれる関数 int unique(int *data,
int n); があり { 1, 1, 2, 1, 3, 3, 3 } は { 1, 2, 1, 3 } になるとします。 戻り値は消した後の要素数です。 ! int xs[10] = { 1, 1, 1, 2, 3, 3, 3, 3, 4, 4 }; の連続する重複要素を消してから 消した後の配列を表示する処理を書いてください。
34.
演習問題 直交座標で表される点(x,y)を極座標(r,theta)に 変換する関数to_polarを実装してください。 ! 引数のデザインはお任せします。 偏角はatan(y/x)ではなくatan2(y,x)を使って計算しましょう。
35.
演習問題 配列の最大値とそのインデックスを計算する関数 int max_argument(const int
*data, int n, int *max_value); があるとします。 ! max_valueにintのポインタを渡すと最大値が代入されます。 ただし最大値が不要な場合はNULLを渡せばOKです。 ! int xs[6] = { 1, 1, 4, 5, 1, 4 }; の最大値のインデックスを求める処理を書いてください。
36.
演習問題 OpenCVでは画像の色表現を変換する関数cvCvtColorを使って カラー画像をグレースケール画像に変換します。 ! void cvCvtColor(const IplImage
*src, IplImage *dst, int code); ! IplImage *color = cvLoadImage("azunyan.jpg", CV_LOAD_IMAGE_COLOR); IplImage *gray = cvCreateImage(cvGetSize(color), IPL_DEPTH_8U, 1); // グレースケールに変換する処理を書いてください // codeはCV_BGR2GRAYを使います ! ※実際はメモリを解放する処理が必要です
Jetzt herunterladen