DSL_statblogスマートフォン用の表示で見るDSL_statblogこの広告は、90日以上更新していないブログに表示しています。以前勉強したときに、関数との値のやりとりについては、次の2パターンがあると理解した。値渡し:引数に変数が渡される。変数自体は変化しない。ポインタ渡し:関数に変数の値を変えて欲しいときに使用。引数が配列のときはポインタ渡しを使う必要がある今回は、配列を関数に渡す状況について確認してみたい。//ポイント2}これだと動いた。][20]の部分)関数内の表記は、arg[行番号]とすれば行毎取り出せる。ちなみに、コンパイル時に警告が表示される。^「競合」とあるが、何と競合しているのか明記されていない。上記は、関数changを定義する前に、main()内でchangが使われていることが理由。コンパイラはchangの引数が正しいかどうか判断が出来ない事により警告が表示されていた。][20]);と書き加えれば上記警告は解消。関数内で配列の置き換え等が出来るか、試してみる。//【追記】参照}chang(color)により、colorの配列の1番目(color[0])が"Japanese"に変わることを期待したが、、、コンパイルの結果は以下の通り。したように、文字列の代入はstrcpyを使えば良い。次のように書きかえればエラーは発生しない。配列の定義時のように書き変えて見る。arg[20]はポインタと認識されているのか?しかし、配列を引数にとる関数で、ポインタを受け取ることの出来る場合は1次元配列の時のみのはずである(本によると)。「ポインタからのキャスト」という点はまだ理解に至ってない。配列の加工については課題を残したが、とりあえず先に進む。【追記】1次元配列の場合は、置き換えることは簡単に出来る。}1次元なら意図したとおりになる。変更前の文字列の0番目は1変更前の文字列の1番目は2変更前の文字列の2番目は3変更前の文字列の3番目は4変更前の文字列の4番目は5変更前の文字列の5番目は6変更後の文字列の0番目は6変更後の文字列の1番目は5変更後の文字列の2番目は4変更後の文字列の3番目は3変更後の文字列の4番目は2変更後の文字列の5番目は1また、関数部分は次の様にポインタの引数にしても同じ結果になる。}1次元配列を引数にする場合は、ポインタの形式で表記する方が一般的なのだそう。理由は「ポインタ変数に格納されているアドレスを受け取ることもある」だかららしい。「配列を渡すときは、コピーではなくてアドレスが渡る」という原理である。...だから、関数に対して配列そのものを渡す(上記ならchang(seq))ようにすることが出来る。ちなみに、構造体のコピーは関数に渡せるが、配列全体を関数に渡すことは出来ない。C言語でも多次元配列を使うことが出来る。»ProfileMemorandum【免責事項】当サイトのプログラムを使用した結果生じた損害については、一切責任を負いません。メモ)はてなブログをはじめよう!nakhirotさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。