●
●日経ビジネス電子版
●日経クロステック
●日経クロストレンド
●日経メディカル
●日経xwoman
●ナショナル ジオグラフィック
●会社情報
●日経クロステックとは?
●ログイン
●お申し込み
●ログイン
●お申し込み
業種
●IT
●電機
●自動車
●建築
●土木
特設
●トレンド&オピニオン
記事一覧
●特集
●連載
●ニュース
●ニュース解説
●オピニオン
●ランキング
●デジタルムック
●お知らせ
●新着順の全記事
●専門メディア一覧
その他のページ
●マイページ
●PDFダウンロード
●書籍
●セミナー
●検索
●日経クロステックとは
●ご購読プラン
●法人特別プラン
関連サイト
●日経クロステック Active
●日経電子版
●関連サイト/サービス一覧
詳しく検索する
●
●
●
●
あなたにオススメ
すべて見る
●AI
●ブロックチェーン
●自動運転
●MaaS
●次世代電池
●新材料
●デジタルものづくり
●iコンストラクション
●
●新着
●トラブル
●調査/データ
●
IT
●ITピックアップ
●ChatGPT革命
●ビジネスAI
●ソフトウエア開発のいま
●DXの現場
●デジタルヘルス
●デジタル立国ニッポン
●
電機
●電機ピックアップ
●テレコムインサイド
●半導体不足の深層
●カーボンニュートラル経済圏
●製造業DX
●
自動車
●自動車ピックアップ
●自動運転
●次世代電池
●
建築
●建築ピックアップ
●建築プロジェクトデータベース
●木材活用最前線
●省エネNext
●建設テック
●建設系資格取得支援
●
土木
●土木ピックアップ
●建設テック
●建設系資格取得支援
●
ランキング
●総合
●IT
●電機
●自動車
●建築
●土木
●オピニオン
(一)日経クロステック トップ
(二)ソフト開発
(三)プログラミングの謎を解明する
(四)第3回 Cの﹁ポインタ﹂を調査せよ!
●︻技術者応援割︼月額プランが8月末まで無料
●7/19無料セミナー﹁人的資本経営﹂で勝つ情報戦略
プログラミングの謎を解明する
第3回 Cの﹁ポインタ﹂を調査せよ!
長谷川 裕行
コピーしました
Cには﹁ポインタ︵pointer︶﹂という便利で厄介な機能がある。Cの学習者が最初に突き当たる壁だとよく言われる。百戦錬磨のベテランでさえ,ポインタがらみのバグは少なからず経験しているだろう。今回はCのポインタについて調べてみた。
アドレスを保持して何になる?
ポインタは“point + er”→﹁ポイントするもの﹂→﹁指し示すもの﹂という意味で,メモリー上のデータを間接的に指し示すことが大きな役割だ…ってことは,ご存じだろう。
どのような変数も,使用する前に初期化しなければならない。ポインタ変数*1ももちろん変数のアドレスで初期化する必要がある。例えば,int型の変数をポインタを介して扱うなら,以下のようになる。
int *p; ―― int型のポインタ変数pを宣言
int num; ―― int型の変数numを宣言
num = 123; ―― numに値︵123︶を代入
p = # ―― pに値︵numのアドレス︶を代入
ポインタ変数は,変数名の前にアスタリスク記号︵*︶を付けて宣言する︵1行目︶。変数のアドレスはアドレス演算子︵&︶で知ることができるので,4行目の文によってポインタ変数pにint型変数numのアドレスが渡される。ここではじめてポインタpは初期化され,意味のある値を持つことになる。変数numの値を保持する領域が,例えばメモリー上のアドレス1000番地に取られたとすれば,ポインタ変数pにはその1000という値が代入され,pを参照することで﹁アドレス1000番地に保持されている値=numの保持している値﹂にアクセスできるようになる。
このように,ポインタ変数はアドレスを代入することで初期化してから利用する。初期化されていないポインタにはゴミ︵不定な値︶が入っており,それは多くの場合メモリー上の﹁どこかとんでもない場所﹂を指している。現在の処理系では,初期化されていないポインタを参照しようとすると,コンパイル時に警告メッセージが出るのが普通だが,昔は何も教えてくれない処理系が多く,ひどい目に遭ったものだ。
高級言語は“アドレス”なんていうほとんど機械語レベルのデータを覆い隠してくれるからこそ﹁高級=人間に近い﹂わけであって,そんなややこしいものは見えないほうが幸せなはずだ。わざわざポインタを使う必要はないんじゃないの? という気がする。それに,アドレスがわかったところで,それが何の役に立つの? と思う人もいるだろう。一体どのような用途に使われるのかをもう少し詳しく見ることにしよう。
ポインタで﹁引数の参照渡し﹂をする
ポインタの利用例としてよく挙げられるのが,引数の﹁参照渡し﹂による関数呼び出しだ。引数に与えた整数を10倍する関数を例に説明しておこう*2。
リスト1のtentimes1は,ポインタを使わず,単に引数の値のコピーを受け取る﹁値渡し﹂の関数だ。関数の中で,引数numに自身の10倍を代入している(1)。そして,tentimes2が引数をポインタとして受け取る﹁参照渡し﹂の関数だ。こちらも引数numが指し示す場所にある値︵Cの構文で“*num”︶に自身の10倍を代入している(2)。ポインタ変数は変数名だけだとアドレスを示すが,先頭に*記号を付けると﹁アドレスの示す場所にある値﹂を参照できる。
リスト1●引数の値渡しと参照渡し。参照︵ポインタ︶で受け取るtentimes2関数では,内部で呼び出し元の変数の値を書き換えられる
[画像のクリックで拡大表示]
main関数*3ではそれぞれの関数を呼び出した後で戻り値と引数の値を表示させている︵図1︶。値渡しのtentimes1では,呼び出し元の引数aには何の変化もない。tentimes1には渡されるのは変数aの持つ値のコピーで,関数内で10倍されるのはそのコピーのほうだからである︵図2(a)︶。
図1●リスト1の実行結果。値渡しでは呼び出し側の変数の値は変わらないが,参照渡しは書き換わっている
[画像のクリックで拡大表示]
図2●値渡しと参照渡しの違い。値渡しは呼び出し元にあるデータのコピーが渡されるので,関数内で引数を書き換えても呼び出し元は書き換わらない(a)。参照渡しは呼び出し元のデータがある場所︵データへの参照︶が渡されるので,関数内でその参照先を書き換えることができる(b)
[画像のクリックで拡大表示]
一方,参照渡しのtentimes2に渡されるのは,式“&b”によって求められた﹁変数bのアドレス﹂である︵リスト1の(3)︶。関数内で10倍しているのは,そのアドレスが指し示す場所にある値,つまり呼び出し側の変数bの値そのものである。結果,呼び出し元の変数bの値が直接書き換わることになる︵図2(b)︶。
この記事は会員登録で続きをご覧いただけます。次ページでログインまたはお申し込みください。
次ページ 配列の操作で役に立つ
●1
●2
●3
コピーしました
あなたにお薦め
今日のピックアップ
JR東日本がアプリ開発人材を5000人育成へ、現場の課題をデジタルで自己解決
生成AIを取り込む3大テスト自動化ツール、ケース自動生成や画像内容の検証も
Geminiはマイグレの救世主となれるのか? ﹁COBOL×AIハッカソン 2024﹂が開催
豪政府が1000億円投資、光量子コンピューターの開発企業CEOが語る野望
パリの大舞台でもAIが活躍、動きの可視化やハイライト映像で五輪を身近に
相次ぎ発覚したクラウド不正侵入、悪用された﹁アクセスキー﹂の意外な流出元
女性が活躍しているのはどの会社? 役員や管理職に占める割合や賃金差異を読み解く
練馬区が住民税などの﹁未納対策支援AI﹂運用開始、狙いはきめ細かな住民サービス
データの品質を高めるにはビジネス部門の専任者が必要だ
職場は﹁仕事に集中する場所﹂ではない? 進化する日本のテレワーク
録画したテレビ番組を無線配信する﹁REC-ON﹂、ChromecastやFire TV向けアプリも
バッファロー専用のバックアップソフトなら起動用USB要らず、手順は非常に簡単
注目記事
市場環境の変化でクラウド移行が急務に? 再考﹁オンプレミス仮想化基盤﹂
物流の未来に向けた変革を推進 業界をリードする﹁物流DX﹂最前線に迫る
現場が求めるSaaSこそ、フィールドサービス業が﹁変わる﹂近道
﹁最安値調達﹂と効率化を両立、製造業で進む間接材購買改革のキーポイント
なぜ財務部門は収益を上げられないのか? 150人の回答で見えた課題と解決策
数時間で構築し12カ月で投資回収、複雑なクラウドの運用をシンプルにする策
おすすめのセミナー
CIO養成講座 ︻第35期︼
業種を問わず活用できる内容、また、幅広い年代・様々なキャリアを持つ男女ビジネスパーソンが参加し、...
業務改革プロジェクトリーダー養成講座︻第16期︼
3日間の集中講義とワークショップで、事務改善と業務改革に必要な知識と手法が実践で即使えるノウハウ...
ChatGPTなど生成AIの企業導入と事業への活用手法
ChatGPTなど生成AIサービスを、自社・組織のスタッフに安全かつ積極的に活用させる立場の方を...
ITリーダー養成180日実践塾 ︻第14期︼
8回のセミナーでリーダーに求められる“コアスキル”を身につけ、180日間に渡り、講師のサポートの...
﹁なぜなぜ分析﹂演習付きセミナー実践編
このセミナーでは﹁抜け・漏れ﹂と﹁論理的飛躍﹂の無い再発防止策を推進できる現場に必須の人材を育成...
IT法務リーダー養成講座
システム開発・運用に関するもめ事、紛争が後を絶ちません。それらの原因をたどっていくと、必ず契約上...
ITアーキテクト養成講座︻第16期︼
システム開発で一般的な﹁V字開発モデル﹂に沿って、上流工程から順を追ってITアーキテクトのタスク...
﹁分析デザイン﹂実践ワークショップ
プログラムを通じて、より現実的で実践的な﹁ケース﹂をたくさん経験する場を提供します。”方法論”と...
セミナー一覧
注目のイベント
ニッポンイノベーション
2024年7月19日︵金︶ 14:00〜17:20︵懇親会18:20まで︶
Japan DX Conference︵札幌︶
2024年7月19日︵金︶10:00~17:30︵予定︶
日経クロストレンドFORUM2024/CHATBOT SUMMIT TOKYO
リアル開催‥2024年7月23日︵火︶/オンライン開催‥2024年7月24日︵水︶、25日︵木︶
Japan DX Conference︵仙台︶
2024年7月30日 10:00
︻8月6日︼効率的な運用や迅速な障害復旧、ITリーダーが押さえるポイントは?
2024年8月6日︵火︶
︻8月22日︼ハイパーバイザーの基本と技術を学ぶ、最新カタログもプレゼント
2024年8月22日
Japan DX Conference︵広島︶
2024年9月6日︵金︶10:00~17:30︵予定︶
Japan DX Conference︵那覇︶
2024年9月17日 ︵火︶10:00~ 17:30 予定
オートモーティブ・セキュリティー セミナー 2024
2024年9月18日︵水︶13:30~18:00︵予定︶
東京ゲームショウ2024
2024年9月26日︵木︶~29日︵月︶
おすすめの書籍
データマネジメント知識体系ガイド 第二版 改定新版
本書﹃データマネジメント知識体系ガイド第二版 改定新版﹄はデータから価値を生み出す方法を様々な角...
データスチュワードシップ データマネジメント&ガバナンスの実践ガイド
本書は“Data Stewardship”の第二版の邦訳であり、日本で初のデータスチュワードシッ...
できる人のパソコン仕事術 なんと効率10倍!
チャンネル登録者数90万人突破!大人気YouTuberによる仕事効率化の教科書。豊富な図版とわか...
これ1冊で丸わかり 完全図解 セキュリティー実践
本書では、企業のセキュリティーを向上させる方法を様々な角度から紹介しています。万が一、被害に遭っ...
データサイエンス数学ストラテジスト﹇中級﹈公式テキスト
DX企業の人材は数学スキルがマストに。そのスキルを証明する資格・データサイエンス数学ストラテジス...
さわって学べるPower Platform Copilot
﹁Power Platform/Copilot Studio﹂により業務アプリケーションは一新、...
書籍一覧
日経BOOKプラスの新着記事
先読みとアイデア出しにおすすめ 次代を創るビジネス書10冊
池波正太郎﹃鬼平犯科帳﹄ 正確な情報を得るために重要なこと
月3万円積み立てで﹁億り人﹂も 時間を味方につける投資術
﹁会社は学校ではない﹂が日本の会社員を窮地に追いやる
松本大﹁茶道の稽古は、仕事から解放される貴重な時間﹂
諏訪貴子 ﹁私はシャア﹂ ガンダムに学ぶリーダーシップ分析の本
﹁日経BOOKプラス﹂2024年上期 記事アクセスランキング
マネーフォワード リーダー層が常に﹁本﹂で学び続ける意味
﹁役職定年で減給予定、今後の働き方に悩む﹂人に勝間和代が選ぶ1冊
ジェンダー平等の実現を目指す経済学の本
日経クロステック Special
What's New
●DX実現へ、IPAが提供する3つの施策
●人と組織の変革でDXに挑む農林中央金庫
●﹁デジタル×人﹂による企業価値最大化とは
経営
●DX実現へ、IPAが提供する3つの施策
●人と組織の変革でDXに挑む農林中央金庫
●﹁デジタル×人﹂による企業価値最大化とは
●データドリブン経営の現在地と未来
●不確実性時代のサプライチェーンはどうあるべきか
●日経クロステックNEXTセミナーレビュー
●クラウドERPの利用をめぐる課題を解消
●生成AIをビジネス活用するための実践方法
●グローバル経営の実現を支援するAI翻訳
●アプリ内製化で成長を続ける星野楽器の強み
●イノベーションの起爆剤
●ServiceNowでDXを加速≫方法は
クラウド
●全フェーズを埋めるITサービスを展開
●﹁APN﹂で世界をリードするCiena
●デジタルガバメントで行政はどう変わる?
●目指すは相互に行き来できるマルチクラウド
●守りながら攻める“製造DX”の方法論とは
アプリケーション/DB/ミドルウエア
●AIでアナリティクスを強化する
●プロジェクトをまたいだ情報共有を促進
●建設業の2024年問題を解消するBI
●生成AIの可能性、中央省庁でも実証
運用管理
●大教大とマウスPC教室での学びを共同研究
●生成AI活用にも マルチクラウドを簡単に
●最適なレガシーマイグレーションとは
●従来のサポートの概念を覆す対応を実現
●生成AIの活用で職員と住民を幸せに!
●あの会社は既に製品ベンダーではない?
●ベネッセホールディングスが標準機として選んだレッツノート
●PC管理の課題を課題をまるごと解決
サーバー/ストレージ
●最新ミッドレンジストレージの実力徹底解剖
●生成AIのもたらす革命の波に乗り遅れるな
●ITデバイス購買プロセスをオンライン完結
●生成AI導入への適切なアプローチとは
●AI活用を加速するストレージの要件は
●PayPay銀行、新時代の銀行インフラ
●生成AI活用へ﹁待ったなし﹂成功の秘訣
●﹁サーバ―﹂部門満足度トップ企業に訊く
●ビジネスPC、ITデバイス購買DXを推進
●最新サーバーに学ぶ熱設計の最前線
●日本語に強い﹁和製生成AIモデル﹂が誕生
クライアント/OA機器
●超軽量AI PCをフル活用で生産性を向上
●“新しい働き方”にふさわしいPCとは?
●業務や役割に応じた﹁社員に最適なPC﹂
ネットワーク/通信サービス
●ネットワークの管理・運用をAIで支援
セキュリティ
●SaaS活用の課題解決を伴走型で支援する
●日本のサイバー防衛を見据えたプロジェクト
●セキュリティ事故発生!対応の要
●DX with Cybersecurity
●専門家が斬る日本の意識と対策の現状は?
●ランサムウエアから診療データはこう守る
ピックアップ
PR
ランキングIT
●現在
●昨日
●週間
1
VMware製品ライセンス変更問題を追う
VMware製品﹁OEM廃止﹂の衝撃、ブロードコムはNECなど国産勢を切り捨て
2
量子コンピューター大混戦
一気に浮上した有望株、冷却原子方式量子コンピューターのすごさとは
3
職場のトラブル相談室
上司の指示で残業を別の月へ付け替え、人事部にカラ残業ではないかと疑われる
4
ニュース解説
全面対決から一転、ファストリとアスタリスクが和解に踏み切った事情
5
週末スペシャル
意外と知らないLINEテクニック5選、便利機能を駆使して効率的にコミュニケーション
1
VMware製品ライセンス変更問題を追う
VMware製品﹁OEM廃止﹂の衝撃、ブロードコムはNECなど国産勢を切り捨て
2
量子コンピューター大混戦
一気に浮上した有望株、冷却原子方式量子コンピューターのすごさとは
3
ニュース
福島銀行でAWS勘定系が稼働、BIPROGYのシステムから乗り換え
4
週末スペシャル
意外と知らないLINEテクニック5選、便利機能を駆使して効率的にコミュニケーション
5
情報・通信企業15社、業績・給与ランキング2024
平均勤続年数8年以下の楽天グループとLINEヤフー、有休取得率90%超の企業はゼロ
1
週末スペシャル
意外と知らないLINEテクニック5選、便利機能を駆使して効率的にコミュニケーション
2
VMware製品ライセンス変更問題を追う
VMware製品﹁OEM廃止﹂の衝撃、ブロードコムはNECなど国産勢を切り捨て
3
情報・通信企業15社、業績・給与ランキング2024
平均年間給与が1000万円超は3社、富士通と大塚商会は前年度比で80万円超アップ
4
あなたが知らないiPhone
1本2500円の﹁Apple Pencil﹂互換ペンが驚きの進化、本家より優れた点もある
5
裏読みスマホ料金
iPhoneやPixelはどこで買うと安いか、2年で機種変更するならキャリアがお得だが
ランキング一覧
●サイトトップ
●ログイン
●お申し込み
業種
●IT
●電機
●自動車
●建築
●土木
記事一覧
●特集
●連載
●ニュース
●ニュース解説
●オピニオン
●ランキング
●デジタルムック
●お知らせ
●専門メディア一覧
関連サイト
●日経クロステック Active
●日経電子版
●関連サイト/サービス一覧
日経クロステック
●このサイトについて
●推奨利用環境
●会員機能の詳細
●よくある質問・お問い合わせ
●登録会員利用規約
●有料会員利用規約
●購読規約︵日経ID決済︶
●登録会員の情報変更・解約
●会員登録/申し込み
●アクセス履歴の利用について
●マイページ
●会社案内
●取材・報道・出版憲章
●個人情報について
●データ利用
●外部送信
●著作権について
●広告ガイド
●日経ID利用案内
モバイル版に切り替え
Copyright © Nikkei Business Publications, Inc. All Rights Reserved.
この機能は会員登録︵無料︶で使えるようになります
●
今すぐ会員登録︵無料︶
●ログイン
フォロー連載・特集
設定
●プロフィール編集
●契約状況の確認・変更
●登録会員の情報変更・解約