SlideShare uma empresa Scribd logo
1 de 22
C/C++と
仲良しになるためのn問
@cocodrips
1
自己紹介
2
名前 : くーむ ( o・ω・)ノ
Twitter : @cocodrips
職業 : ゲームプログラマ(2年目)
すきなもの : Python / C++
ブログ : ぴよぴよ.py
C++歴 : 2500行くらい (初心者)
ポインタとは
3
‣ 変数を指す変数
✦ 変数はメモリ上のどこかに配置される
✦ 配置される場所のことをアドレスと言う
Q1.ポインタの基本
5
x ptr
100(アドレス) 116
int x = 10;
int *ptr = &x;
x ptr &x &ptr *ptr
Q1. それそれの値は何になる??
6
x ptr
100(アドレス)
int x = 10;
int *ptr = &x;
x ptr &x &ptr *ptr
10
Q1. それそれの値は何になる??
Q1.ポインタの基本
116
7
x ptr
100(アドレス)
int x = 10;
int *ptr = &x;
x ptr &x &ptr *ptr
10 100
Q1. それそれの値は何になる??
Q1.ポインタの基本
116
8
x ptr
100(アドレス)
int x = 10;
int *ptr = &x;
x ptr &x &ptr *ptr
10 100 100
Q1. それそれの値は何になる??
Q1.ポインタの基本
116
9
x ptr
100(アドレス)
int x = 10;
int *ptr = &x;
x ptr &x &ptr *ptr
10 100 100 116
Q1. それそれの値は何になる??
Q1.ポインタの基本
116
10
x ptr
100(アドレス)
int x = 10;
int *ptr = &x;
x ptr &x &ptr *ptr
10 100 100 116 10
Q1. それそれの値は何になる??
Q1.ポインタの基本
116
11
4 3 10 2 1
100(アドレス) 108
Q2 - 1. *array をcoutするとどうなる?
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
1. コンパイルエラー
2. 100
3. 4
12
4 3 10 2 1
100(アドレス) 108
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
*array は、
array[0] のエイリアス
1. コンパイルエラー
2. 100
3. 4
Q2 - 1. *array をcoutするとどうなる?
13
4 3 10 2 1
100(アドレス) 108
Q2 - 2. *(array + 4) をcoutするとどうなる?
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
1. コンパイルエラー
2. 104
3. 3
4. 1
14
4 3 10 2 1
100(アドレス) 108
Q2 - 2. *(array + 4) をcoutするとどうなる?
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
1. コンパイルエラー
2. 104
3. 3
4. 1
array + 4 は array[4]のアドレス
*(array + 4) は
array[4] のエイリアス
15
Q3 - 1. &array が100である時、
arrayの中身はどう配置されてる?
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 81.
0 1 2 … … 3 4 5 … … 6 7 82.
100(アドレス)
100(アドレス)
16
Q3 - 1. &array が100である時、
arrayの中身はどう配置されてる?
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 81.
0 1 2 … … 3 4 5 … … 6 7 82.
100(アドレス)
100(アドレス)
17
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 8
100(アドレス) 104 108 112 116 120 124 128 132
Q3 -2. array[2] をcoutすると、何が表示される?
1. コンパイルエラー
2. 108
3. 124
4. 2
5. 6
18
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 8
100(アドレス) 104 108 112 116 120 124 128 132
array[2]が指しているのは、
array[2][0]のアドレス。
Q3 -2. array[2] をcoutすると、何が表示される?
1. コンパイルエラー
2. 108
3. 124
4. 2
5. 6
19
Q3 - 3. array[1][2]に一次元でアクセスしたい時、
どうすれば5が表示される?
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
20
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
((int*)array)[5];
arrayはint**型で、array[0]の先頭アドレス、
つまりarray[0][0]のアドレスを持っている。
int*型にキャストすれば、一次元でアクセス可能
Q3 - 3. array[1][2]に一次元でアクセスしたい時、
どうすれば5が表示される?
21
Q4. おまけ
int array[5] = {4, 3, 10, 2, 1};
Q4. 何が表示される?
cout << 2[array] << endl;
22
Q4. おまけ
int array[5] = {4, 3, 10, 2, 1};
Q4. 何が表示される?
cout << 2[array] << endl;
10
array[2]は *(array + 2)のエイリアス。
array[2] == *(array + 2)
*(array + 2) == *(2 + array)
*(2 + array) == 2[array]
これまでのお話が書いてある本
23
秘伝C言語問答 ポインタ編
柴田望洋さん
一冊まるごとポインタの話。
ポインタが怖い人への本

Mais conteúdo relacionado

Mais procurados

Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
Yuuki Ono
 

Mais procurados (20)

Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
やさしく知りたいC言語
やさしく知りたいC言語やさしく知りたいC言語
やさしく知りたいC言語
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Nimとgrundy数の大雑把な説明
Nimとgrundy数の大雑把な説明Nimとgrundy数の大雑把な説明
Nimとgrundy数の大雑把な説明
 
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
C言語講習会3
C言語講習会3C言語講習会3
C言語講習会3
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
全域木いろいろ
全域木いろいろ全域木いろいろ
全域木いろいろ
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
 

Destaque

Engaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment CycleEngaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment Cycle
Marty Bennett
 
Transformation or Transition
Transformation or TransitionTransformation or Transition
Transformation or Transition
Mike Pounsford
 

Destaque (20)

競技プログラミングについて
競技プログラミングについて競技プログラミングについて
競技プログラミングについて
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaokeRy pyconjp2015 karaoke
Ry pyconjp2015 karaoke
 
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
Engaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment CycleEngaging Students Virtually Throughout the Enrollment Cycle
Engaging Students Virtually Throughout the Enrollment Cycle
 
DigiMedia360
DigiMedia360DigiMedia360
DigiMedia360
 
Climbing Off The Ladder, Before We Fall Off
Climbing Off The Ladder, Before We Fall OffClimbing Off The Ladder, Before We Fall Off
Climbing Off The Ladder, Before We Fall Off
 
Buyer Persona - Key to B2B online marketing success
Buyer Persona - Key to B2B online marketing successBuyer Persona - Key to B2B online marketing success
Buyer Persona - Key to B2B online marketing success
 
Pedagogical Strategies for Worthwhile Learning in Online Environments
Pedagogical Strategies for Worthwhile Learning in Online EnvironmentsPedagogical Strategies for Worthwhile Learning in Online Environments
Pedagogical Strategies for Worthwhile Learning in Online Environments
 
Business Analytics with R
Business Analytics with RBusiness Analytics with R
Business Analytics with R
 
Defense
DefenseDefense
Defense
 
Unityを使ったVRアプリ作成入門 ABCD2015金沢編
Unityを使ったVRアプリ作成入門 ABCD2015金沢編Unityを使ったVRアプリ作成入門 ABCD2015金沢編
Unityを使ったVRアプリ作成入門 ABCD2015金沢編
 
11-16
11-1611-16
11-16
 
Transformation or Transition
Transformation or TransitionTransformation or Transition
Transformation or Transition
 
Medier i en digital verden 150922
Medier i en digital verden 150922Medier i en digital verden 150922
Medier i en digital verden 150922
 
Turkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon ValleyTurkey is a New Kind Of Silicon Valley
Turkey is a New Kind Of Silicon Valley
 
Мобилната реклама - Ефективност през таргетиране
Мобилната реклама - Ефективност през таргетиранеМобилната реклама - Ефективност през таргетиране
Мобилната реклама - Ефективност през таргетиране
 
Seo conference 2015 google my business & for business
Seo conference 2015 google my business & for businessSeo conference 2015 google my business & for business
Seo conference 2015 google my business & for business
 

Semelhante a C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp

2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
Jiro Nishiguchi
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門
mangantempy
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
yak1ex
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)
umidori
 

Semelhante a C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp (20)

2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
ji-6. 配列
ji-6. 配列ji-6. 配列
ji-6. 配列
 
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
 
Tokyo r27
Tokyo r27Tokyo r27
Tokyo r27
 
C++によるソート入門
C++によるソート入門C++によるソート入門
C++によるソート入門
 
秀スクリプトの話
秀スクリプトの話秀スクリプトの話
秀スクリプトの話
 
Gura プログラミング言語の紹介
Gura プログラミング言語の紹介Gura プログラミング言語の紹介
Gura プログラミング言語の紹介
 
多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門
 
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
cp-11. ポインタ
cp-11. ポインタcp-11. ポインタ
cp-11. ポインタ
 
Brief introduction of Boost.ICL
Brief introduction of Boost.ICLBrief introduction of Boost.ICL
Brief introduction of Boost.ICL
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)
 

Mais de cocodrips

Mais de cocodrips (8)

Python仮想環境構築の基礎と ツールの比較
Python仮想環境構築の基礎と ツールの比較Python仮想環境構築の基礎と ツールの比較
Python仮想環境構築の基礎と ツールの比較
 
スマホでDeepLearning実践入門(α版)
スマホでDeepLearning実践入門(α版)スマホでDeepLearning実践入門(α版)
スマホでDeepLearning実践入門(α版)
 
チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019
 
Docstringを書こう!
Docstringを書こう!Docstringを書こう!
Docstringを書こう!
 
Python update in 2018 #ll2018jp
Python update in 2018 #ll2018jpPython update in 2018 #ll2018jp
Python update in 2018 #ll2018jp
 
Simple is better than complex. ~私がPythonを愛する理由~
Simple is better than complex. ~私がPythonを愛する理由~Simple is better than complex. ~私がPythonを愛する理由~
Simple is better than complex. ~私がPythonを愛する理由~
 
ポインタ渡しと参照渡し
ポインタ渡しと参照渡しポインタ渡しと参照渡し
ポインタ渡しと参照渡し
 
女性のためのC++コミュニティ Ladies++
女性のためのC++コミュニティ Ladies++女性のためのC++コミュニティ Ladies++
女性のためのC++コミュニティ Ladies++
 

Último

Último (11)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp

  • 2. 自己紹介 2 名前 : くーむ ( o・ω・)ノ Twitter : @cocodrips 職業 : ゲームプログラマ(2年目) すきなもの : Python / C++ ブログ : ぴよぴよ.py C++歴 : 2500行くらい (初心者)
  • 4. Q1.ポインタの基本 5 x ptr 100(アドレス) 116 int x = 10; int *ptr = &x; x ptr &x &ptr *ptr Q1. それそれの値は何になる??
  • 5. 6 x ptr 100(アドレス) int x = 10; int *ptr = &x; x ptr &x &ptr *ptr 10 Q1. それそれの値は何になる?? Q1.ポインタの基本 116
  • 6. 7 x ptr 100(アドレス) int x = 10; int *ptr = &x; x ptr &x &ptr *ptr 10 100 Q1. それそれの値は何になる?? Q1.ポインタの基本 116
  • 7. 8 x ptr 100(アドレス) int x = 10; int *ptr = &x; x ptr &x &ptr *ptr 10 100 100 Q1. それそれの値は何になる?? Q1.ポインタの基本 116
  • 8. 9 x ptr 100(アドレス) int x = 10; int *ptr = &x; x ptr &x &ptr *ptr 10 100 100 116 Q1. それそれの値は何になる?? Q1.ポインタの基本 116
  • 9. 10 x ptr 100(アドレス) int x = 10; int *ptr = &x; x ptr &x &ptr *ptr 10 100 100 116 10 Q1. それそれの値は何になる?? Q1.ポインタの基本 116
  • 10. 11 4 3 10 2 1 100(アドレス) 108 Q2 - 1. *array をcoutするとどうなる? Q2.ポインタと配列 int array[5] = {4, 3, 10, 2, 1}; 104 112 116 1. コンパイルエラー 2. 100 3. 4
  • 11. 12 4 3 10 2 1 100(アドレス) 108 Q2.ポインタと配列 int array[5] = {4, 3, 10, 2, 1}; 104 112 116 *array は、 array[0] のエイリアス 1. コンパイルエラー 2. 100 3. 4 Q2 - 1. *array をcoutするとどうなる?
  • 12. 13 4 3 10 2 1 100(アドレス) 108 Q2 - 2. *(array + 4) をcoutするとどうなる? Q2.ポインタと配列 int array[5] = {4, 3, 10, 2, 1}; 104 112 116 1. コンパイルエラー 2. 104 3. 3 4. 1
  • 13. 14 4 3 10 2 1 100(アドレス) 108 Q2 - 2. *(array + 4) をcoutするとどうなる? Q2.ポインタと配列 int array[5] = {4, 3, 10, 2, 1}; 104 112 116 1. コンパイルエラー 2. 104 3. 3 4. 1 array + 4 は array[4]のアドレス *(array + 4) は array[4] のエイリアス
  • 14. 15 Q3 - 1. &array が100である時、 arrayの中身はどう配置されてる? Q3.ポインタと多次元配列 int array[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; 0 1 2 3 4 5 6 7 81. 0 1 2 … … 3 4 5 … … 6 7 82. 100(アドレス) 100(アドレス)
  • 15. 16 Q3 - 1. &array が100である時、 arrayの中身はどう配置されてる? Q3.ポインタと多次元配列 int array[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; 0 1 2 3 4 5 6 7 81. 0 1 2 … … 3 4 5 … … 6 7 82. 100(アドレス) 100(アドレス)
  • 16. 17 Q3.ポインタと多次元配列 int array[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; 0 1 2 3 4 5 6 7 8 100(アドレス) 104 108 112 116 120 124 128 132 Q3 -2. array[2] をcoutすると、何が表示される? 1. コンパイルエラー 2. 108 3. 124 4. 2 5. 6
  • 17. 18 Q3.ポインタと多次元配列 int array[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; 0 1 2 3 4 5 6 7 8 100(アドレス) 104 108 112 116 120 124 128 132 array[2]が指しているのは、 array[2][0]のアドレス。 Q3 -2. array[2] をcoutすると、何が表示される? 1. コンパイルエラー 2. 108 3. 124 4. 2 5. 6
  • 18. 19 Q3 - 3. array[1][2]に一次元でアクセスしたい時、 どうすれば5が表示される? Q3.ポインタと多次元配列 int array[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}};
  • 19. 20 Q3.ポインタと多次元配列 int array[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; ((int*)array)[5]; arrayはint**型で、array[0]の先頭アドレス、 つまりarray[0][0]のアドレスを持っている。 int*型にキャストすれば、一次元でアクセス可能 Q3 - 3. array[1][2]に一次元でアクセスしたい時、 どうすれば5が表示される?
  • 20. 21 Q4. おまけ int array[5] = {4, 3, 10, 2, 1}; Q4. 何が表示される? cout << 2[array] << endl;
  • 21. 22 Q4. おまけ int array[5] = {4, 3, 10, 2, 1}; Q4. 何が表示される? cout << 2[array] << endl; 10 array[2]は *(array + 2)のエイリアス。 array[2] == *(array + 2) *(array + 2) == *(2 + array) *(2 + array) == 2[array]

Notas do Editor

  1. 配列はこうやって連続的なアドレスに配置される