SlideShare una empresa de 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言語問答 ポインタ編
柴田望洋さん
一冊まるごとポインタの話。
ポインタが怖い人への本

Más contenido relacionado

La actualidad más candente

プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
Yuuki Ono
 
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
AtCoder Inc.
 

La actualidad más candente (20)

Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
Suphx: Mastering Mahjong with Deep Reinforcement Learning
Suphx: Mastering Mahjong with Deep Reinforcement LearningSuphx: Mastering Mahjong with Deep Reinforcement Learning
Suphx: Mastering Mahjong with Deep Reinforcement Learning
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
Za atsu-20170328
Za atsu-20170328Za atsu-20170328
Za atsu-20170328
 
直前合宿 講義スライド
直前合宿 講義スライド直前合宿 講義スライド
直前合宿 講義スライド
 
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
 
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
 
Trianguler
TriangulerTrianguler
Trianguler
 
アルゴリズムのイメージを擬人化する
アルゴリズムのイメージを擬人化するアルゴリズムのイメージを擬人化する
アルゴリズムのイメージを擬人化する
 

Destacado

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
 

Destacado (20)

競技プログラミングについて
競技プログラミングについて競技プログラミングについて
競技プログラミングについて
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
 
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
 
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
 

Similar 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
 

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

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)
 
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言語ポインタとアドレス
 

Más de cocodrips

Más 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 (10)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
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の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: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...
 
論文紹介: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
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: 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
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

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 del editor

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