prog_0004
の編集
https://k.osask.jp/klog/?prog_0004
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2012_0001
2013_0001
2013_0002
2013_0003
2014_0001
2015_0001
2016_07
2016_08
2016_09
2016_10
2016_11
2017_01
2017_02
2017_03
2017_04
2017_05
2018_01
2019_01
BracketName
FormattingRules
FrontPage
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KH_SARC_00
KH_dha8
MenuBar
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
VC_install
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
fdpl_memo0001
fdpl_memo0002
fdpl_memo0003
fdpl_memo0004
fdpl_memo0005
fdpl_memo0006
fdpl_memo0007
fdpl_memo0008
fdpl_memo0009
fdpl_memo0010
gg02_0004
gg02_0005
gg02_0006
gg02_0007
gg02_0008
gg02_0009
https
impressions
memo0001
memo0002
oisix01
osaskology
osaskology0
osecpu_0001
osecpu_0002
p20200229a
p20200303a
p20200310a
p20200321a
p20200401a
p20200730a
p20201230a
p20220628a
p20220701a
populars
prog_0001
prog_0002
prog_0003
prog_0004
prog_0005
* C言語における汎用的な関数、の続き -(by [[K]], 2014.10.17) ** (0) -[[prog_0001]]の続きです。 --要約すると、関数を一般化するときに、関数のポインタだけでは不十分で、その関数に関するパラメータなどを記録した構造体へのポインタも必要だよね、ということです。 ** (1) -ということで、僕はC言語で関数を渡すのなら、関数へのポインタのほかにカスタマイズ構造体へのポインタも渡すべきだと主張しているのだけど、これをどう渡すのかということに関しては、方法が2つあると思います。 --(a) fとcustomizeの2つのポインタを渡す 例: void qsort(base, num, size, compare, customize); --(b) fはcustomizeの先頭に格納し、引数としてはcustomizeだけを渡す 例: void qsort(base, num, size, customize); -(a)の方法は単純で分かりやすいけど、ソース上では少々冗長で、ちょっとめんどくさい。バイナリ的にも2つの引数をスタックに積まなくてはいけないので、コードは長くなります。 -(b)の方法はソース上では短いけれど、実際に関数を呼び出す際にはcustomizeの中にある関数ポインタを取り出さなくてはいけないので、実行速度面で少し余計なコストがかかります(と思う)。 ** (2) -それで、僕としては(a)をお勧めしたいです。なぜなら、それはcustomizeをNULLにできるからです。 -ぶっちゃけると、customizeを使って関数を修飾したい場合というのはそれほど多くはないです。それは、Cの標準ライブラリでは今まで「関数ポインタのみ版」しか提供されてこなかったほどです。だからこういうメジャーケースでは、customizeをNULLにしたくなります。 -しかし(b)の方式でいくとなると、とにかく関数ポインタを格納するためだけにcustomizeは必須になるので、ダミーのオブジェクトを作って(まあ実際はただのintな変数でもいいけど)そこにfのポインタを格納しておかなければいけません。 -そういうことを強制されなくて済む分だけ、(a)のほうがいいかなあと僕は思います。 * こめんと欄 #comment
タイムスタンプを変更しない
* C言語における汎用的な関数、の続き -(by [[K]], 2014.10.17) ** (0) -[[prog_0001]]の続きです。 --要約すると、関数を一般化するときに、関数のポインタだけでは不十分で、その関数に関するパラメータなどを記録した構造体へのポインタも必要だよね、ということです。 ** (1) -ということで、僕はC言語で関数を渡すのなら、関数へのポインタのほかにカスタマイズ構造体へのポインタも渡すべきだと主張しているのだけど、これをどう渡すのかということに関しては、方法が2つあると思います。 --(a) fとcustomizeの2つのポインタを渡す 例: void qsort(base, num, size, compare, customize); --(b) fはcustomizeの先頭に格納し、引数としてはcustomizeだけを渡す 例: void qsort(base, num, size, customize); -(a)の方法は単純で分かりやすいけど、ソース上では少々冗長で、ちょっとめんどくさい。バイナリ的にも2つの引数をスタックに積まなくてはいけないので、コードは長くなります。 -(b)の方法はソース上では短いけれど、実際に関数を呼び出す際にはcustomizeの中にある関数ポインタを取り出さなくてはいけないので、実行速度面で少し余計なコストがかかります(と思う)。 ** (2) -それで、僕としては(a)をお勧めしたいです。なぜなら、それはcustomizeをNULLにできるからです。 -ぶっちゃけると、customizeを使って関数を修飾したい場合というのはそれほど多くはないです。それは、Cの標準ライブラリでは今まで「関数ポインタのみ版」しか提供されてこなかったほどです。だからこういうメジャーケースでは、customizeをNULLにしたくなります。 -しかし(b)の方式でいくとなると、とにかく関数ポインタを格納するためだけにcustomizeは必須になるので、ダミーのオブジェクトを作って(まあ実際はただのintな変数でもいいけど)そこにfのポインタを格納しておかなければいけません。 -そういうことを強制されなくて済む分だけ、(a)のほうがいいかなあと僕は思います。 * こめんと欄 #comment
テキスト整形のルールを表示する