Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
幸雄 村上
342 views
え!それって参照渡し?
え!それって参照渡し?
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 4
2
/ 4
3
/ 4
4
/ 4
More Related Content
PDF
フィボナッチ数列の作り方
by
Tomoya Kawanishi
PDF
圧縮ネイティブ・ライブラリについて.pdf
by
幸雄 村上
PDF
アプリケーション識別子.pdf
by
幸雄 村上
PDF
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
by
幸雄 村上
PDF
分散環境におけるジャストインタイム設定の試み
by
幸雄 村上
PDF
Swift 2 (& lldb) シンポジウム
by
Yuichi Yoshida
PDF
SwiftのOptionalを理解する
by
幸雄 村上
PDF
Php s2
by
Jun Chiba
フィボナッチ数列の作り方
by
Tomoya Kawanishi
圧縮ネイティブ・ライブラリについて.pdf
by
幸雄 村上
アプリケーション識別子.pdf
by
幸雄 村上
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
by
幸雄 村上
分散環境におけるジャストインタイム設定の試み
by
幸雄 村上
Swift 2 (& lldb) シンポジウム
by
Yuichi Yoshida
SwiftのOptionalを理解する
by
幸雄 村上
Php s2
by
Jun Chiba
More from 幸雄 村上
PPTX
OpenGLプログラミング
by
幸雄 村上
PPTX
Swiftでブロックチェーンを実装する
by
幸雄 村上
PDF
Web API 通信の符号化について
by
幸雄 村上
PPTX
SwiftのOptionalを理解する
by
幸雄 村上
PPTX
七曜表と備忘録
by
幸雄 村上
PDF
AppleScriptなど
by
幸雄 村上
PDF
AppleScriptとは何ぞや
by
幸雄 村上
PPTX
RUDP
by
幸雄 村上
PPTX
サーバーレスアーキテクチャで悩んでます
by
幸雄 村上
PPTX
Master-Detail App を実装する
by
幸雄 村上
PPTX
IBM Watson Services for Core ML
by
幸雄 村上
PPTX
ゲームの企画書づくりに挑戦
by
幸雄 村上
PPTX
独自Documentクラス
by
幸雄 村上
PPTX
Document based application
by
幸雄 村上
PDF
MojaveのDark Mode
by
幸雄 村上
PPTX
Bukuro.makers
by
幸雄 村上
PPTX
独自Documentクラス
by
幸雄 村上
PPTX
Getting a packet trace
by
幸雄 村上
PPTX
The Bash in Tokyo : AppKitとUIKit
by
幸雄 村上
PPTX
デザインパターン
by
幸雄 村上
OpenGLプログラミング
by
幸雄 村上
Swiftでブロックチェーンを実装する
by
幸雄 村上
Web API 通信の符号化について
by
幸雄 村上
SwiftのOptionalを理解する
by
幸雄 村上
七曜表と備忘録
by
幸雄 村上
AppleScriptなど
by
幸雄 村上
AppleScriptとは何ぞや
by
幸雄 村上
RUDP
by
幸雄 村上
サーバーレスアーキテクチャで悩んでます
by
幸雄 村上
Master-Detail App を実装する
by
幸雄 村上
IBM Watson Services for Core ML
by
幸雄 村上
ゲームの企画書づくりに挑戦
by
幸雄 村上
独自Documentクラス
by
幸雄 村上
Document based application
by
幸雄 村上
MojaveのDark Mode
by
幸雄 村上
Bukuro.makers
by
幸雄 村上
独自Documentクラス
by
幸雄 村上
Getting a packet trace
by
幸雄 村上
The Bash in Tokyo : AppKitとUIKit
by
幸雄 村上
デザインパターン
by
幸雄 村上
え!それって参照渡し?
1.
え!それって参照渡し? 関数の引数 Bitz 村上 幸雄 開発環境:MacBook
Pro (Retina, 13-inch, Late 2013) macOS 10.14 Xcode 10.0 発表日:2018/10/17 ■はじめに とても違和感を感じる用語がある。それは、『参照渡しだ』。 え!違うだろ?と感じていたが、いい機会なので、調べてみた。 ■引数 引数と呼ばれるものにどんな種類があるのか、まずは列挙してみる。 実引数 関数に渡す値。 仮引数 関数が受け取った変数。 値渡し(call by value) 値が渡される。 ポインタ渡し 渡す値がアドレスの値渡し。 sum(1, 2); int sum(int a, int b) { return a + b; } 実引数 仮引数
2.
参照渡し • 変数渡し(call by
variable) 変数そのものを渡す。 • 参照渡し(call by reference) 参照渡しで、内部でアドレス情報を渡す方法。 ■Pascal Pascalでは,値渡し(call by value)と変数渡し(call by variable)が存在し、変数渡しは参照渡しに相 当する。 そもそもは、変数渡しの実装方法に参照渡しがある。参照渡しは、変数に対する参照(アドレス情報) を渡す方法だ。 Inside Macintoshは、コードはPascalで記載されているが、それをC言語で利用する場合、varがつ いた変数渡しの引数は、C言語ではポインターと読み替えていた。 具体的には、Inside Macintoshで以下のようにPascalで説明されていたとする。 これをC言語では、以下のように読み替える。 ■C言語 C言語の関数の引数は全て値渡し。K&Rでしっかりと説明されている。 ポインタでアドレスの値を渡すのを参照渡しと呼ぶのは間違いだ。 ■Java Javaも全て値渡し。 ポインタ演算ができない、アドレス(参照)の値渡しが利用できるが、これを参照渡しと呼ぶのは、 如何なものか。 ■C++ 値渡しに加え、本物の参照渡しが存在する。 PROCEDURE GetPort(VAR port: GrafPtr); Pascal void GetPort (GrafPtr * port); C言語
3.
また、C++11では右辺値参照・ムーブセマンティクスという所有者の移動が用意されている。 ■C# 二つの参照渡しの方法が用意されている。 refは変数が渡されるので、初期化によって値が設定されていない変数はNGだ。 outは値を返すという意味から、初期化は必須でないか、関数内で値を必ず設定しないといけない。 ■Swift 値渡しだが、inoutキーワードをつけると値呼びの結果返し(call-by-value-result)となる。 C言語のポインターの場合と同様に、変数が参照型の場合、参照の値渡しにより値を変更できる。 int initializeInMethod; OutArgExample(out initializeInMethod); Console.WriteLine(initializeInMethod); void
OutArgExample(out int number) { number = 44; // 代入が必須 } out void time_two(int& a) { a *= 2; } int initializeInMethod = 0; // 初期化が必須 OutArgExample(initializeInMethod); Console.WriteLine(initializeInMethod); void OutArgExample(ref int number) { number = 44; } ref 参照渡し
4.
値呼びの結果返しの例。 少し複雑に感じるが、基本、C言語と同様と考えると成る程だ。 class Demo { public
var num = 0; } func set999(a: Demo) { a.num = 999; } let demo = Demo() set999(demo) 参照の値渡し func set999(a: inout Int) { a =999 } var num = 0 set999(&num) 値呼びの結果返し
Download