質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

1622閲覧

C言語での値渡しと参照渡しの使い分けについて

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

1グッド

2クリップ

投稿2019/05/15 10:34

編集2019/05/15 10:36

タイトルの通りc言語での値渡しと、参照渡しの使い分けについて教えて頂きたいです。

自分は値渡しは大きいデータを扱う場面は使わない方がいいといったぐらいしか分かっていません。

それぞれの利点などを具体的に教えて頂きたいです。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

C言語に「参照渡し」という機能はありません。すべての引数はコピーして渡される値渡しです。

なお、ポインタを渡すことで、別な変数を参照させることは可能です。配列や文字列などはC言語の構文としてコピーできないので、代わりに先頭を指すポインタを渡す形となります。

投稿2019/05/15 10:41

maisumakun

総合スコア145186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2019/05/15 13:08

んー、まぁ「ポインタを値渡しすることで(機能的には)参照渡しを実現してる」と言えますけどもね。
raccy

2019/05/15 13:24

C言語に「参照渡し」が存在すると主張する記事が世の中には13個も存在します(俺調べ)からね。epistemeさんもそういう記事をお書きですか?エントリーに入れるので、ぜひ教えてください。
HogeAnimalLover

2019/05/15 14:57

>>ポインタを渡すことで、別な変数を参照させることは可能です。配列や文字列などはC言語の構文としてコピーできないので、代わりに先頭を指すポインタを渡す形となります。←これは広義で参照渡しと呼べると思います。C言語単独の機能ではありませんが、プログラミング定石として定着しているものです。
Zuishin

2019/05/15 15:10

C++ の参照渡しはどう呼べばいいですか? 区別しなくていいですか?
HogeAnimalLover

2019/05/16 09:00

この議題はc言語です。ここで他の言語機能と区別する必要はありません。
Zuishin

2019/05/16 09:01

C++ と C で用語が違っても混乱しないということですか?
maisumakun

2019/05/16 09:09 編集

あくまで言語の機能としては値を渡しているだけ(ポインタはコードを書く側が適宜解釈している)なので、そこは強調しておかないといけないと考えます。 言語自身が呼び方を決めている場合(PHPの「オーバーロード」など)は、多少変でも従うほかないとは思いますが、そうでもないのに他の言語で別な意味に使われている単語を流用するのは混乱を招くので有害だと思います(ということで、他言語にあまり存在しないために、他の意味に取られることがまずない「ポインタ渡し」は、自分の判断としては許容範囲です)。
HogeAnimalLover

2019/05/16 09:12

はい。別言語に同名機能が存在する可能性を考えていたら回答できません。
Zuishin

2019/05/16 09:14

C 言語の場合は C++ コンパイラを使ってコンパイルされることが多いと思いますし、C++ は better C として使われることも多いと思いますが、それでもわざわざ C++ の用語を C で別の意味に使うだけのメリットがありますか?
HogeAnimalLover

2019/05/16 11:59

わざわざ敢えては使いません。ただし、出題者がこれをそう呼ぶならば文句を付けるほどでないでしょう。意図の伝わる用語を、別の言語のために言い換えるメリットがありますか?
Zuishin

2019/05/16 12:03

出題者ではありません。質問者です。 不適当な言葉を使うなら正すのが親切というものでしょう。 適切か不適切かが問われています。 C と C++ で用語を混乱させることが適切とは思えません。
HogeAnimalLover

2019/05/16 13:26 編集

何か勘違いされているようですが、私が申したいことは『「別言語に同名の機能があるからややこしい、正せ」では筋違いだ』ということです。言葉が不適切だから指摘するという配慮を理解していないわけではありません。
Zuishin

2019/05/16 13:28

別言語と言っても C++ と C です。 どちらにもポインタ渡しはあります。 C で参照渡しと呼ばれているものが C++ ではポインタ渡しに名前が変わり、さらに違うものが参照渡しになるとしたら、C++ を学ぶ人にとって非常にややこしいことになると思います。 そして C++ を学ぶ人は C を同時あるいは前段階として学ぶことも多いと思います。 この混乱を招いてまで「参照渡し」という言葉を使わなければならない理由はなんですか?
HogeAnimalLover

2019/05/16 15:01

(書き込み早いですね。)そこまで広い話として捉えてはいませんよ。 理由は本質問のタイトルが「C言語での値渡しと参照渡しの使い分けについて」だからです。もちろん、C言語の関数呼び出し時の引数渡しの方法は「値渡し」しかか存在しません。ですから、言語単独機能の話ではなく、組み合わせで実現できる事実上の機能を含めての広義用語と考えます。結果、C++における参照渡しとは違うものになります。 ちなみにCとC++で解釈が変わる別例としては「文字列」を挙げることができます。Cならばchar配列、C++ならばstring型データを指すことが一般的でしょう。 本質問では、タイトルや質問本文で「C言語での〜〜」と書かれている以上、C言語における範疇で解釈することが適切であると私は考えます。
Zuishin

2019/05/16 21:31 編集

C 言語の範疇なら、参照渡しは無いという答えになると思います。「文字列」の解釈は変わりません。実装方法が増えるだけです。C++ でも文字列の実装法としての char 配列はありますし、C 言語でも UTF-8 を実装する byte 配列はあります。\0 で終わるとも限りませんが、これも「文字列」です。
raccy

2019/05/16 21:55

「Cの参照渡し」の記事は誰も紹介してくれないので、悲しいですが、その話はひとまず置いときます。 HogeAnimalLoverさんは、その言語に無い機能でも、別の言語の機能と似たような事ができる何かがあるなら、それを言っているに違いないと推測されていると言うことでしょうか?例えば「C言語でのテンプレートの使い方」と書いてあったら「C言語のジェネリックの使い方」を聞きたいに違いないとになるのですか? 私は最初に質問文を読んだ時「参照渡しと言っているからC++と勘違いしているのでは?」と思いました。ですが、気付いた時にはBAがすでにあって、BAがあるのに追記・修正依頼するのはどうだろうとためらっている内に質問者が退会してしまったので、真実を聞く機会は失われてしまいました。私の「実はC++について聞きたかった説」も可能性は0ではないと思われます。
HogeAnimalLover

2019/05/16 22:57

C++と間違えて質問していた。と、いう説ですか。その考えはなかったです。それはありえると思いますよ。 私はそもそも、C++のことは考えていません。C言語または運用上の話題の中であることを前提に考えますね。 C言語の機能に存在しないものである以上、言語機能レベルではなく運用レベルの観点の話題と私なら考えます。
Zuishin

2019/05/16 23:24

では「C 言語に参照渡しは無い」という回答は間違いだということですか?
Zuishin

2019/05/16 23:28

「広義の参照渡し」についてはどこで定義されていますか?
Zuishin

2019/05/16 23:30

知識の乏しい入門者が適切でない用語を使った場合、それを訂正・確認せず「このことを言っているのだろう」と頭の中で勝手に解釈するのが最も良い方法ですか?
Zuishin

2019/05/16 23:34

参照をポインタと解釈するなら、ポインタを使うメリット・デメリットは数多くありますが、それについてどの程度まで言及すべきですか?
Zuishin

2019/05/16 23:35

あなたが「参照渡し」という言葉を知ったのは、侍エンジニアか Qiita ではありませんか?
Zuishin

2019/05/16 23:40 編集

C 言語に「クラス」という言葉は無いと思いますが、構造体をクラスと呼び、関数をメソッドと呼び、変数をプロパティと呼び、int 型変数の初期化をインスタンス化と呼んでもいいですか? 構造体の中に構造体を定義することを継承と呼び、共用体を定義することをポリモーフィズムと呼んでもいいですか?
shogoism

2019/05/17 02:54

raccyさん> 僕もこの質問を読むまで、C言語には参照渡しがあると思っていました。 たしか独習Cの第二版に参照渡しと書かれていたと記憶しています。 (もう手元にないので間違いであればごめんなさい)
raccy

2019/05/17 09:18

> shogoismさん おお、貴重な情報ありがとうございます。私も独習Cを持ってないですが目次に「参照渡し」の文字がくっきりあることを確認しました。
HogeAnimalLover

2019/05/17 15:51

隣のコメントでも書かれておられますが、「公式書類示せ」とか「C++の場合と違うじゃないか」とか大袈裟です。 私はむしろ、質問者が「C言語の参照渡し」という言葉を使うなら、これを尊重すべきと考えます。もちろん、raccyさんの言うとおり「質問者がC言語をC++と間違えているという可能性」もありますので、それについて確認することは正しいと思いますよ。ただし、繰り返しますが「C++では別に意味のある言葉だから不適切である、正せ」は筋違いです。 ちなみに侍エンジニアは初めて名前を聞きました、Qiitaは名前しか知りません。
raccy

2019/05/17 16:25

そうですね。「日本の大統領」という言葉を使うなら、「韓国では別に意味のある役職だから不適切である、正せ」というのも筋違いになるってやつですね。公式書類である憲法や法律には「日本に大統領はいない。」なんて書いてませんしね。 それで、HogeAnimalLoverさんは記事でも書籍でもあなたの主張を補強するものを教えてくれないのでしょうか?
HogeAnimalLover

2019/05/17 17:24

?私の主張は、この議題中のみに限定された話なので、外部ソースなど存在しません。「質問者の使った言葉を尊重するべきだ」と述べているだけです。 「C言語の規格上に参照渡しという言葉は存在しない」というのは当然です。ただし、存在しないものである以上、「参照渡し」という言葉が話題中で局所定義されていると考えても問題はないでしょう。「質問者が間違えている」と考えるよりも、「言葉を広義的に解釈する」ほうが適切と考えます。
asm

2019/05/17 17:41

ちなみに、CとC++で別物になるキーワードとしてautoが挙げられます。
Zuishin

2019/05/17 22:10

私の問いへの答えはまだですか?
maisumakun

2019/05/17 22:21

> 「質問者が間違えている」と考えるよりも、「言葉を広義的に解釈する」ほうが適切と考えます。 仮に質問者が誤解から使っていたとしても、その誤解を訂正せずに放置するほうが正しい、という考えでしょうか?
HogeAnimalLover

2019/05/18 04:11

はい。誤解の可能性を考えるならば確認しておくのは適切ですよ。 私の主張は「別世界のルールに基づいて用語間違いを決めつけ、別世界のルールを強制することは筋違いだ亅ということです。 個人的な話ならメールなりでお願いします。
Zuishin

2019/05/18 04:17

私への回答はどうなりました?
HogeAnimalLover

2019/05/18 04:33

個人的な質問ならメールでください。自己ページにありますよ。これ以上、掲示板を私物化したいのですか?
Zuishin

2019/05/18 04:34

話の続きですが、いきなりどうしました?
HogeAnimalLover

2019/05/18 12:47

掲示板で議論する価値がない(私物化に当たる)と判断しました。
Zuishin

2019/05/18 12:52

突然? 何かきっかけがありましたか?
HogeAnimalLover

2019/05/19 12:40

おお!情報ありがとうございます。私は宗教論争には興味ありませんので、そちらの方は関わらないようにしたいと思います。
Zuishin

2019/05/19 12:43 編集

今更? というか、宗教でしたか。どうりで。
guest

0

ベストアンサー

値渡しだと、その内容がコピーされて関数に渡されます。
コピーが渡るため、その値を関数内で変更しても、渡し元は変更されません。
これをどうにかするには、その値を返り値で返す必要があります

おっしゃるように、サイズが大きくなると、渡すときにメモリのコピーを行う必要があります。また、返り値で帰す場合も、そのサイズのコピーが発生することになります。
その分実行速度が遅くなります

また、関数の引数は一般的にスタック領域を介して行われますが、スタックのサイズは限られているため、それを超えるサイズのデータは値渡しでは渡すことができないってこともありますね

投稿2019/05/15 10:46

y_waiwai

総合スコア87782

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/05/15 12:26

なぜ低評価なんでしょうね。 参照渡し=ポインタ渡しと値渡しの使い分けについての質問に対する回答としての論点はずれてないと思いました。 ただ、値渡しとして最大はレジスターサイズまででは? 文字列などは必然的にポインター渡しだった気がするんですけど。
y_waiwai

2019/05/15 12:38

ある程度はレジスタで渡されますが、ある程度を超えるとスタックに格納されますね。 まあ、組み込みなんかでワンチップMPUなんかだとスタックサイズは数キロしか確保しないため、ここらへんは切実だったりします
raccy

2019/05/15 13:27

saziさんはC言語に「参照渡し」があると主張する派なのですね。そう主張する記事を集めているのですが、もし、そういう記事を書いているのであれば、ぜひ教えてください。
sazi

2019/05/15 14:02

@raccyさん 特に主張はしていません。 vbのByRefを見た時にそれがcのポインタ渡しと対比されるものなんだなと思った位です。
HogeAnimalLover

2019/05/15 14:48

「ポインタ値を渡すことで間接的に参照渡しを実現すること」を広義の参照渡しと呼ぶかはケースバイケースですね。まあ本議題では質問者が参照渡しと読んでいる以上、そう解釈するのが妥当だと思います。
HogeAnimalLover

2019/05/15 15:11 編集

ちなみに、>>raccyさんへ  それは『C言語に「参照渡し」がある』という言葉の解釈の問題です。「「参照渡し」という言語機能があるのか?」という意味ならば「No」です。 「言語機能を組み合わせて事実上「参照を渡すこと」が可能なのか?」という意味ならば「Yes」です。
moredeep

2019/05/16 08:26

私としてはHogeAnimalLoverさんと同意見で、伝わるならば別に呼び方はどうでもいいと思っています。言葉狩りは面倒なだけです。
maisumakun

2019/05/16 09:13

本質が「伝わらない」から問題なのです。
y_waiwai

2019/05/16 10:21

本質とはなに? 参照渡しという言葉の定義がどこで「公式に」定義されてるのか示すことはできるでしょうか。 残念ながら、どこの誰やらわからん人間が書いた定義しか目にしたことないのでその資料をお願いします できれば日本語でお願いしたいところですが
Zuishin

2019/05/16 10:51

その前にこれを参照渡しと呼ぶ「公式の」資料を提供してみては?
y_waiwai

2019/05/17 12:01

えーと、私はこれが参照渡しだ、とはいってませんし、私の回答を見てもらえばわかりますが、参照渡しという言葉さえ使っていません。 あくまで、値渡しのことを書いているだけです。ですので、私に対して参照渡しの資料を要求するというのはピントはずれとしか言いようがありません。 が、それを前提としても答えておきますが、C言語において、参照渡しという言葉を使用した資料というのはみたことがありません。 だから、なおのこと、参照渡しとは?その本質とはなに?と。 まさか、どこの誰かもわからんような赤の他人が勝手にほざいている言葉を元にして、Cには参照渡しはない、と言ってるとは思いませんでしたね。 なんだかなあ。。
Zuishin

2019/05/17 12:15

C++17 の INDEX を見てください。 reference のところに call by とあります。 C17 の INDEX には value に call by はありますが、reference という語はありません。reference は C++ で導入されたものだからです。 C17 で call by value が指すところは関数呼び出しです。
Zuishin

2019/05/17 12:16 編集

あなたは、参照渡しの質問にこの回答を寄せました。 これが参照渡しである「公式の」資料を提供してください。
Zuishin

2019/05/17 12:19

まさか、どこの誰かもわからんような赤の他人が勝手にほざいている言葉を元にして、Cには参照渡しはない、と言ってるとは思いませんでしたね。 なんだかなあ。。 と、言われないものを私は提供したので、あなたも提供してください。 できなければこの言葉はそのままお返しします。
y_waiwai

2019/05/17 12:39

それでは、これが参照渡しではないという「公式の」資料を提供しましょうよ。 #って、ムリムリなやり取りはやめときましょう C言語には参照渡しについて記述した資料はないですが、これで参照渡しはない、と主張するには無理があると思いますよ。 いや別にポインタ渡しが参照渡しだ!と主張するつもりはありませんが、ない、とするならもちっと確固たる資料というか定義をしっかりさせましょうよ。 まあ、こういう議論とは別に、(C言語には限らず)参照渡しとは何か、ポインタ渡しと参照渡しは別である、という公式の資料はどっかにありませんかね。
Zuishin

2019/05/17 13:00

まさか、どこの誰かもわからんような赤の他人が勝手にほざいている言葉を元にして、これが参照渡しだ、と言ってるとは思いませんでしたね。 なんだかなあ。。 なんだかなあ。。 なんだかなあ。。
Zuishin

2019/05/17 13:01

というかソース侍エンジニアですよね?
y_waiwai

2019/05/17 13:09

えーと、参考までにあなたが思っている参照渡しの定義を示していただけますか? ぜひ、どこの誰かもわからんような赤の他人が勝手にほざいている記事ではないものをお願いいたします
Zuishin

2019/05/17 13:11

侍エンジニアでない「公式の」資料をあなたが出す番です。 なんだかなあ。
y_waiwai

2019/05/17 13:16

うん、意見が一致しましたね。 さあ、いっしょに。 なんだかなあ。。
Zuishin

2019/05/17 13:24

一致してないでしょ。
退会済みユーザー

退会済みユーザー

2019/05/17 23:47

公式資料がないならCでは「未定義」で良いのでは。。
Zuishin

2019/05/17 23:57 編集

C では光合成も未定義ですね。ということは「C で光合成について教えてください」と問われた時には「C には光合成はありません」と答えるのが最も誤解が少ないと思います。関数呼び出しを光合成と名付ける必要はありませんし、そのような呼び方をしている人がいたら注意してもいいでしょう。
Zuishin

2019/05/18 00:03

また C 言語はまだ進化を続けています。C の言語仕様に参照渡しが入ることは十分考えられることであって、今からこれを混乱させる意味は無いと思います。 仮に C に参照渡しが入ったとしましょう。「参照渡しって何だ?」と思った入門者が「C 参照渡し」で検索したとしましょう。そして「参照渡しとはポインタを渡すことである」という資料(たとえばこの回答)を見つけたとしましょう。その人はかなりの時間を無駄にすることになりますね。
退会済みユーザー

退会済みユーザー

2019/05/18 00:32

そうですね。。
raccy

2019/05/18 03:01 編集

いやいや、HogeAnimalLoverさんの流儀に従って、ここは「広義の光合成」と捉えるべく努力をすべきだと愚考します。 一つは光合成の仕組みからの解釈です。光合成は水と二酸化炭素を入力し、光の作用を受けて、酸素と炭水化物を出力します。つまり、二つの入力に対して、二つの出力があるような関数の事だと思われます。より汎化すれば、複数の入力と複数の出力でしょう。また、光も重要な要素です。光は言わば植物が置かれた環境によるものですので、環境による影響と考えられます。光のありなしで変換するかどうかも変わりますから、これは状態から副作用をうけると言うことです。まとめますと、「Cの光合成」とは「複数の入力と複数の出力があり、プログラムの状態によって動作が変わる関数」に違いありません! もう一つは比喩的表現の解釈です。ひなたぼっこしながら、ぼーっとしている人を「光合成をしている」なんて表現があるかとおもいます。ぼーっとしていないように見えて、英気を養っているみたいな状態です。これは、一定の数になるまで、何かを積むなど何もしないように見えるが、いざ、読み込みをはじめれば、どんどん返すというものと思われます。つまり、スタックやキューのようなものかと思われます。もうひとつ考えなければいけないのは、入力と出力が異なり、時間もかかることから、別スレッドで変換処理をしているだろうということです。つまり、「変換処理を別スレッドで行いながらキューに貯めていく処理」が「Cの光合成」に違いありません! 私は普段は「植物のこと言っているんじゃないの?」と考えてしまうため、こういった考えをすることに慣れていません。そのため、私の能力では、この二つぐらいしか思いつきませんでした。「言葉を広義的に解釈する」ことに慣れている方であれば、もっと素晴らしい解釈をしてくれるに違いありません。ここにはそういった方が複数居られるようですので、どのような解釈をしてくれるのか、とても楽しみです。
Zuishin

2019/05/18 03:08

まずは侍エンジニア塾に就職して光合成の記事を書くところからですね。
sazi

2019/05/18 03:43

@y_waiwaiさん 落ち着いたかなーと思うので、ちょっと質問させて下さい。 冒頭の方のコメントで、 > ある程度はレジスタで渡されますが、ある程度を超えるとスタックに格納されますね。 とあるんですが、「スタックを利用しない関数コール」のような方法があるという事ですか?
Zuishin

2019/05/18 03:46

fastcall ですね。今も使われてるのかどうか知りませんが昔はありました。
sazi

2019/05/18 04:10 編集

@Zuishinさん ありがとうございます。分かりにくくすみません。 値渡しの場合でスタックを利用する際に、push・pop以外の方法があり、スタックをレジスターサイズを超えて一度に使用する命令があるのかというのが気になったので。 断片的な知識しかないので、質問自体がおかしいのかもしれません。
Zuishin

2019/05/18 04:15

ありますよ。スタックはフラットなアドレス空間なので。プッシュ、ポップはスタックポインタレジスタの数値を変えてるだけです。
Zuishin

2019/05/18 04:21 編集

あとここでいう「値」はレジスタに入っている数値のことではなく、言語によって定義された「値」のことです。例えば int 型ローカル変数でもスタックに保存され、そのアドレスから中身を読み出す実装は普通にあります。
sazi

2019/05/18 04:38 編集

極端な例で、値渡しで10Mの値をスタックを10M使って渡すというような関数コール命令があるかというのが疑問です。 ポインター渡しを使わないなら、レジスターサイズまで10Mを分解してパラメータとして渡すしかないと思っているのですが。
sazi

2019/05/18 04:54 編集

長々と、ごめんなさい。 インラインアセンブラなどではなく、C言語としてそういったものがあるのかという疑問です。
Zuishin

2019/05/18 04:57

インラインアセンブラではなく機械語の話をしていました。C 言語は機械語にコンパイルされるので、構造体を関数に渡す時にはそのような命令群にコンパイルされます。 機械語自身には引数の概念はありません。ただコンパイラが特定のメモリ(この場合はスタック)にある値を引数とみなすだけです。
sazi

2019/05/18 05:38 編集

> 構造体を関数に渡す時にはそのような命令群にコンパイルされます。 あ、そうですね。なんだか視野が狭くなっていました。 Zuishinさん、お付き合いありがとうございました。
Zuishin

2019/05/18 05:09

横から失礼しました。
asm

2019/05/18 08:31

fastcallどころかx64CPUではレジスタが増えたので 大体の引数はレジスタで渡されますよ
y_waiwai

2019/05/18 08:45

まずは関数呼び出しの話から。c言語 呼び出し規約、でぐぐってみてください。 関数呼び出しにおける引数、返り値の扱いの解説が出てきます
Zuishin

2019/05/18 08:49

x64 呼び出し規約というのがあるんですね。知りませんでした。
y_waiwai

2019/05/18 08:58 編集

で、C言語に参照呼び出しというていぎがないなら、C言語に参照呼び出しというのはない、と答えるべきで、ポインタ呼び出しは参照呼び出しではない、と答えるのは明らかな間違いです 日本語の問題ですのでここらへんよくご確認ください
Zuishin

2019/05/18 09:03

C 言語に光合成というていぎがないなら、ポインタ呼び出しは光合成ではない、と答えるのが明らかな間違いだと? 確かに日本語の問題ですね。 意味わからないので、日本語からどうぞご確認ください。
y_waiwai

2019/05/18 09:03

で、肝心のポインタ呼び出しを参照呼び出しかどうかの議論は、まずこの参照呼び出しという言葉の定義をはっきりさせましょう 今までの議論は、この定義をあいまいなまま行っているため、単なる個人の意見の表明にしかなってませんぜ
Zuishin

2019/05/18 09:05

では、早く公式の資料を提示してください。
Zuishin

2019/05/18 09:05

あなたは参照渡しの質問にこの回答をしました。この回答を裏付ける「公式」の資料をどうぞ。
y_waiwai

2019/05/18 12:40

defind(参照渡し)がfalseである。 if(ポインタ渡し==参照渡し)真; else 偽; 何が出るという話で、これは偽である、とするのは間違いでしょう ちょっとわかりやすく言うと、真偽を論じることが間違い、ってことで。 #コンパイルエラーですがなw
Zuishin

2019/05/18 12:51

わかりやすく言うと、関係ないことを回答したわけでしょ?
Zuishin

2019/05/18 12:56

未定義なら「未定義です」とエラーを出さなきゃいけないわけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問