[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/25 02:13 / Filesize : 275 KB / Number-of Response : 1034
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 151



1 名前:デフォルトの名無しさん [2019/04/02(火) 11:23:37.62 ID:SQXqRaAc0.net]
!extend:checked:vvvvv:1000:512
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

883 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:10:17.33 ID:mvKDv9Bs0.net]
タワーマンション

884 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:10:41.15 ID:HQZYLHkVa.net]
何かの容量と言ったときの「何か」がメモリです。
利点は基本的にないです。

885 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:22:11.61 ID:0e3y3dPM0.net]
データが存在する場所

886 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:44:19.75 ID:VQ1VjdQ1M.net]
みんな思い思いのモデルで遊んでるから、パパは箱モデル出しちゃうぞ

887 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:45:29.38 ID:vVgcrwZV0.net]
うさみみハリケーンでメモリ覗いてチートしよう!

888 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 21:52:15.32 ID:o6WQvi940.net]
天使のような微笑みに
時は立ち止まる

889 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 22:05:37.40 ID:mXxRrk+K0.net]
なんか分からない部分のコード示してもらわないと
ここの有能な人たちもどう説明したらいいか分かんないから雑談始まったがw

890 名前:蟻人間 mailto:sage [2019/06/13(木) 22:14:30.76 ID:wtG0GGqp0.net]
1ビットが0か1かの二通りを表せる情報量。
1バイトは0〜255までの256通り(2の8乗)を表せる情報量で8ビットに等しい。
1バイトを複数並べたのがメモリーで、各バイトの位置がアドレス。

891 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 22:16:01.81 ID:dMX2AWSU0.net]
このスレにエスパーいるの?



892 名前:蟻人間 mailto:sage [2019/06/13(木) 22:22:12.70 ID:wtG0GGqp0.net]
アドレスに型情報を加えて、先頭アドレスを起点として配列のようにアクセス可能にしたものがポインタ。
しかし、配列は実体を要求するが、ポインタは実体を要求しない。ヌルポインタは、何も指し示さないポインタ。

893 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 22:29:06.28 ID:o6WQvi940.net]
ポインタ配列ってやると実体のない配列になるのかなw

894 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 00:57:04.32 ID:v+vUDnm40.net]
ポインタ配列

895 名前:

ポインタの配列 *array[]
配列のポインタ (*array)[]
[]
[ここ壊れてます]

896 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 06:12:05.65 ID:hJXFGwRg0.net]
“メモリ”って言葉がフラッシュメモリのような、
ストレージデバイスのイメージになってるのも
説明を難しくしてる要因かもしれないね。

メモリは記憶単位ごとに数字で番地が振られていて…と言っても、
「メモリってディレクトリ構造中のファイルとして記憶するんじゃないの?」
みたいな感じに、互いの言葉の意味がチグハグで。

897 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 06:41:21.97 ID:f7k/n5Cq0.net]
RAMとROMの違いなんて今の時代説明しても分かる人の方が少ない気がする

898 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 07:27:48.00 ID:Q6PAXFreM.net]
>メモリは記憶単位ごとに数字で番地が振られていて

キャッシュメモリ「せやろか?」

899 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 07:30:51.51 ID:0tg6L2nj0.net]
https://i.ytimg.com/vi/paQ3zIsz1-8/maxresdefault.jpg
https://upload.wikimedia.org/wikipedia/commons/d/d2/Pamiec_bebnowa_1.jpg
やっぱりコレを見せれば理解しやすいんでね?

900 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 08:11:51.98 ID:9CL7rguOx.net]
>>872
磁気コアメモリと、右側はRAMACか?

901 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 08:31:34.65 ID:0nKPup2VM.net]
磁気ドラムだよ
ランダムアクセスでさえないのにメインメモリにしたとかいう



902 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 09:02:07.63 ID:vN7LRDhO0.net]
>>856
ポインタ=君と感覚を共有してる全く同性能の影分身だ。
君の価値が100万なら、影分身は1円で作れる。

ポインタのメリットは会社が君を働かせたい時、君を直接雇うと100万円かかるが、影分身を雇うと1円で済むわけだ。
影分身が働いてる間、君は家でエロゲでもしてればいい。

気をつけないといけないのは、仕事中、影分身の腕が切断されたら、エロゲやってる君の腕も切断されるし
影分身が死んだら君も死ぬ。


これ以上わかりやすい説明はないと思うが、どうよ?w

903 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 09:44:07.68 ID:y8r4DOsw0.net]
例えられても伝わらないとさらに混乱させるのが、ポインタと配列周辺の話

904 名前:デフォルトの名無しさん [2019/06/14(金) 10:03:42.87 ID:+nXqXsIga.net]
>>875
分身と言ってしまうとそっくりな実体がもう一つあるかのように思ってしまうのではないか?
やはり実体を指し示すものを連想させる何かにした方が良いのではないか?道標とか。

905 名前:デフォルトの名無しさん [2019/06/14(金) 10:26:13.82 ID:6se/aPBa0.net]
このように、どうわかりやすく書こうとしてもどっかに不都合が生じるのがポインタの説明
素直にコンピュータの仕組みを勉強するしかないんや・・・

906 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 10:36:21.57 ID:9CL7rguOx.net]
ポインタはWindowsのショートカットみたいなもの。
これでもまだ誤解されそうね。

907 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 11:45:14.96 ID:suWeiIcg0.net]
インデックスレジスタを拡張したもの

908 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 12:26:01.65 ID:2kFHhEHgd.net]
キャッシュとバッファの違いを教えてください

909 名前:蟻人間 mailto:sage [2019/06/14(金) 12:32:55.71 ID:lQGpZUNAd.net]
キャッシュは次回のアクセスを高速化するためにデータを一時的に保存しておくこと。
バッファはデータを受け止めるために、保存場所を確保するためのメモリー領域。

910 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 14:56:26.65 ID:6Rxhp4270.net]
アセンブラやらせてみる。

911 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 15:05:09.54 ID:AQvHkPsD0.net]
>>881
文脈による
汎用機



912 名前:だと二次キャッシュをバッファストレージなんて言ったりすることもあるし []
[ここ壊れてます]

913 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:36:32.38 ID:TPMloxQtM.net]
>>875
本体がパンツ下ろしたら影分身も職場でパンツ下ろすんですね分かります

914 名前:デフォルトの名無しさん [2019/06/14(金) 17:45:59.79 ID:zWOLB0k60.net]
ポインタがよくわからないんだけど、普通にメモリアドレス==ポインタって認識なの?

int i;
int *p=&i;
の時に変数iのポインタであるpっていういい方は正しいですか

915 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:52:24.52 ID:f7k/n5Cq0.net]
メモリアドレスは格納されるけど
メモリアドレス==ポインタっていうのは違う気がする
nullだのvoidだのもあるし

916 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 17:58:41.54 ID:Soq0+PVxa.net]
iのポインタを格納してるポインタ変数p

値自体を問題にするときはアドレスだが、プログラム中で操作の対象となってる場合はポインタって感じだな。

917 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:21:37.60 ID:Js4PARtC0.net]
>>886
ポインタはメモリアドレスと型もってて
メモリアドレスからのデータをその型として解釈する

918 名前:デフォルトの名無しさん [2019/06/14(金) 18:23:47.92 ID:zWOLB0k60.net]
なるほど、なんとなくわかったありがとう。混乱の原因はポインタっていう言葉がいろんな使われ方してるからだった。

919 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:25:31.19 ID:Kaq8zorwa.net]
こう書くとまた荒れそうだが、ポインターとはアドレスが入った変数である、というのは正しい。
NULLは0番地を特別扱いしてるだけだし、void *もあくまでアドレスだ。

920 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:32:50.01 ID:N06YB3IUM.net]
>>887
nullはまだしもvoidは関係なくね?

921 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:34:58.75 ID:Js4PARtC0.net]
荒れる要素なくない?
メモリアドレスを保持する整数と型を組合せてあるだけだし

void*はアドレス保持するだけの変数って意味じゃないの



922 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:35:21.76 ID:6z9b86iK0.net]
void *p;

p++ を許すのは GCC拡張だっけか

923 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:37:46.52 ID:AQvHkPsD0.net]
>>891
「正しい」とか書くと荒れる元にしかならん
(初心者のうちは)…「という理解でいい」ぐらいにしとき

924 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:39:36.73 ID:BA+tS0rQa.net]
>>891
NULLの件はそれ逆だろう。
実際の0番地を特別扱いにしているのではなく、「どこも指さない特殊なアドレス」を表記するために整数0を使用しているだけで、0番地が特別な訳ではないはず。まあ実際にメモリ割り当てで0番地を割り当てることはしないだろうけど。
void*も、型を指定しないポインタを表すのに使っている型の指定であり、アドレスというのはおかしい。

925 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:45:34.86 ID:Js4PARtC0.net]
>>894
サイズどういう扱いなのそれ

926 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:48:29.67 ID:6z9b86iK0.net]
>>897
確かポインタ演算時は1バイト (char) 扱いだったかな?

927 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 18:52:58.09 ID:Js4PARtC0.net]
1バイトなんか
まあそりゃそうか

928 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:41:25.35 ID:WbpzR08B0.net]
void*なんていらなくね?char*でいいじゃん
構造のわからないものは「バイト列」って意識でしょ?

929 名前:蟻人間 mailto:sage [2019/06/14(金) 21:47:11.03 ID:Qn7Uv1x90.net]
>>900
void *がないとmemcpyに引数を渡すとき面倒。

930 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:51:26.70 ID:6z9b86iK0.net]
double * には double * だけを許し char * や strucut foo * を渡したらアカンと
要求される型を厳しくチェックしようとすると

「ポインタだったら実体の型は何でもいい」 という指示を char * に含ますわけにはいかない

931 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 21:52:14.30 ID:sIZagWQx0.net]
汎用ポインタがchar*型になってたらコードレビューは絶対に通さないわ



932 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 22:42:50.69 ID:6se/aPBa0.net]
汎用ポインタというかvoid型という概念そのものが嫌い。
全てを厳密にやれ。言語を作る時点でまず関数に戻り値を強制すべきだったんだ。
ポインタわからん軍の原因はvoid型とかいう曖昧なせいなの

933 名前:ェあるせいなのも一理あろうて。 []
[ここ壊れてます]

934 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 23:06:06.10 ID:sIZagWQx0.net]
>>904
関数型言語に行ってらっしゃい

935 名前:デフォルトの名無しさん [2019/06/15(土) 00:02:16.99 ID:n7CfuAo60.net]
Kotlin もよろしく

936 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 01:25:34.80 ID:RN+u9pJY0.net]
windowsにおいて

setLocale(LC_ALL, "en_US.UTF-8");

が成功する環境と失敗する環境があるのですが何が原因かわかりません。。何かご存じの方いらっしゃらないでしょうか?

937 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 09:25:25.61 ID:oZ4xCIwS0.net]
>>904
お前の好き嫌いなんてどうでもいいし、よくわからん時点ならvoid*なんて無視しとけばいいだけ
この手の人は何故か全部を一気に理解しようとするけど今どきの言語仕様でそれやったら終わらんよ

938 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 09:37:31.78 ID:pAE5sudp0.net]
「俺の考える最強に分かりやすいポインタの説明」




・・・無理

939 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 10:05:45.19 ID:QD7Sd0bs0.net]
>>907
OSは?両方ともWindows10?

940 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 10:23:13.60 ID:T0BSudQv0.net]
>>908 void君だろ

C言語なら俺に聞け 148
https://mevius.5ch.net/test/read.cgi/tech/1537347410/37
37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018/09/22(土) 01:42:06.64 ID:16ZpsTnK0
>>36
マジでIDE使え。
そして貼るときはlanguageをCにしとけ。シンタックスハイライトが変わるから。
で、どれが分からんの?

> enter
> find
> delete
> show_all
> delete_all

mainはこの際分からなくていい。
最初に理解しないといけないのは show_all だ。

ただし細かいことを言ってもキリがないが、

> void show_all(void)

なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。
普通は void show_all(tag_address* ta) だよ。
そうじゃないと複数のリストがあったときに使い物にならないだろ。

マジな話、このソースのレベルの本なら捨てた方がいい。
俺は大学の教材がいいと思うぞ。
(読んでないが)リストならググったら東工大とか出てきた。
www.is.titech.ac.jp/compview/clang/chap11.html

941 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 11:55:35.29 ID:hahimQeS0.net]
懐かしいな、void君



942 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 13:59:23.10 ID:RN+u9pJY0.net]
>>910
コメントありがとうございます。
8と10で成功する端末があることを確認しています。失敗する端末は今のところ10だけです。

そして

SetConsoleOutputCP(65001);

を使用することで失敗する端末でもUTF-8をコンソールに表示でき、一応目的は達成できました。

調べてみると、結局のところwindowsではsetlocaleで2バイト以上文字は設定できないとのことだったのですが、ではなぜ成功する端末があるのか……

943 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 15:49:06.56 ID:fUxHfD4R0.net]
謎だな

944 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 16:57:06.86 ID:RWV4c9qt0.net]
引数voidって古いシステムの保守でたまに見るな

945 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 16:59:05.33 ID:5ne/m9/q0.net]
と、古いシステムの保守なんかやったことねえやつがぬかすか

946 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:17:17.87 ID:ulIUfSMj0.net]
引数voidは今でも普通に使うけどな

947 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:22:29.22 ID:5ne/m9/q0.net]
void show_all(); なんて書くやつ見かけたらなるべく距離を置く

948 名前: mailto:sage [2019/06/15(土) 18:40:21.75 ID:8bW7ANPO0.net]
>>918
C++ ではそれは当たり前ですが…

949 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:42:04.96 ID:fAAVk5UIM.net]
>>918の場合
C++なら問題ない
C言語だとちょっと不味い

950 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 18:46:57.27 ID:5ne/m9/q0.net]
おまえからも距離を置きたいぜ
ここをどこだと思っている
C++なら無問題などと言わねばわからぬ者がいるとでも思っているのか

951 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 22:30:32.42 ID:BY4KYcRQ0.net]
とりあえず、シングルステートでも返り値をboolにする俺がやってきましたよ。



952 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 02:14:21.54 ID:wRD2pOBha.net]
ケースバイケースで使い分ける

953 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 08:10:06.75 ID:ORkp7ynDM.net]
>>921
>>918の意図が分かってない者がいるぞ
さあどうする?

954 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 10:35:26.32 ID:jvyHVZd00.net]
>>924
世も末だな
困ったもんだ

955 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 11:22:43.26 ID:RqGVrKm70.net]
大丈夫だよ
ここを見ながらシステム作っている奴はいないから

956 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:20:19.90 ID:X7GbKeYn0.net]
Cはvoid省略すると可変長引数扱いになるんじゃなかったっけ?
C++は省略してもvoidだけど

957 名前: mailto:sage [2019/06/16(日) 13:35:27.88 ID:gDHKfsB60.net]
>>927
無指定でどうこう、というのは確か C89 までの話だったかと
C99 では C++ と同じく省略しても void と記憶しています

958 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:51:25.10 ID:Mp4zqsM90.net]
>>928
破壊的変更が行われた仕様が回避できるなら回避すべきだな

959 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 13:58:56.49 ID:VBKycPxl0.net]
>>928
記憶違いでしょ。変わってないよ。違うと言うなら出典確認してから来てね。
kikakurui.com/x3/X3010-2003-01.html#93
> ...関数定義の一部でない関数宣言子の識別子並びが
> 空の場合,仮引数の個数及び型の情報がないことを指定する。

960 名前:デフォルトの名無しさん [2019/06/16(日) 15:14:33.98 ID:+bML8jLFa.net]
>>915
新しく作るプログラムでも引数なしならvoidにするよ。
まあこの頃Cで作ることそのものが減ったけどな。

961 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 15:41:14.25 ID:rIa5AgZza.net]
入力がない関数ってのは関数ではないな



962 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 15:51:28.54 ID:eI7bdJXk0.net]
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
こんな汚物が上から目線で何かもの言ってるかと思うと反吐が出る
さっさと消えてほしい

963 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 16:33:52.45 ID:wZzXbGgB0.net]
>>932
なぜ入力がないと思ったんだ?

964 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 16:48:40.62 ID:xMbXVdd30.net]
DCL20-C. 引数を受け付けない関数の場合も必ず void を指定する
ttps://www.jpcert.or.jp/sc-rules/c-dcl20-c.html
を見ると(かなり読み解きにくいんだけど)…

プロトタイプ宣言では
int func(void); ... 引数0個
int func(); ... 関数呼び出しでの引数の整合をチェックしない

関数定義では
int func(void) {...} ... 引数0個
int func() {...} ... 引数0個

って具合に func() の解釈が一貫していない、
だから引数0個の関数は同じ形になるようにvoidをつけましょう、
という話に思える。
この辺が議論の混乱を生んでるんじゃないかな。

ついでに関数定義の int func() {...} の形式は廃止予定とも出てる。
プロトタイプの方は廃止予定ではない、ってことかな。

965 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 17:08:16.47 ID:jvyHVZd00.net]
そこでjpcertを持ち出すのは興醒めだ
どっかの馬の骨が「こうすべき」と主張してるってだけな話は
現実のマシンの動きとそれ束縛しているiso/iec9899でどうなのかという話とは論点が違う

966 名前:935 mailto:sage [2019/06/16(日) 17:32:48.77 ID:xMbXVdd30.net]
>>936
JPCERTを引用したのは「プロトタイプ宣言と関数定義とで
引数

967 名前:部が空の関数 func() の引数の解釈が違う」って話を
根拠つきで引き出すためでな。 >>927-930 あたりの流れを受けて。
規格の文章が並べて載ってるので都合が良いのだ(読みにくいけど)。

実際のところ、JPCERTのルールっていうか提案には
俺も全面的に賛成してるわけじゃない。むしろ強く反発する部分もあったり。
[]
[ここ壊れてます]

968 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 19:00:02.87 ID:jvyHVZd00.net]
必要ねえじゃん
iso/iec9899の条文を引用して
その箇所がどのように解釈できると
自分の言葉で言えばいいのを
虎の威を借る形でサボる怠慢を
読まされる側は付き合ってらんねー

969 名前:デフォルトの名無しさん [2019/06/16(日) 19:52:17.11 ID:5fyh92Dva.net]
>>932
そうだね。関数ではないね。しかしCだと処理をまとめる方法が関数しかないから仕方がないね。

970 名前:デフォルトの名無しさん [2019/06/16(日) 20:02:46.68 ID:5fyh92Dva.net]
まあしかし getchar() みたいにプログラムとは無関係な所から取ってきた値を返すとか、バッファやstatic変数で外部からアクセスできない変数の内容を返すみたいな処理は必要だから引数なしも必要だ。
グローバル変数やハードウエアの初期化処理だけまとめて書きたいなんて時にも使える。

971 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:22:18.78 ID:6QFVwEqYd.net]
○○Initialize()
的な関数の存在に違和感ないんだが



972 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:26:17.96 ID:rIa5AgZza.net]
クラスのメンバーの操作だとしても、だったらそのクラスのコンテキストを渡すのが正しいだろうとは思うけどね。
現実としてはまあ規模による。

973 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:40:48.32 ID:Mp4zqsM90.net]
プログラムの関数は数学の関数とは微妙に違うから仕方ない
仕方ないと思えない奴らが関数型言語を作った

兎に角Cでは本来の関数に制限するのは事実上不可能

974 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:47:50.76 ID:EhqtZL1+0.net]
functionって関数の他に機能って意味もあるけど、英語圏の人はどちらの意味で使ってるんだろうね?

975 名前: mailto:sage [2019/06/16(日) 21:15:12.39 ID:gDHKfsB60.net]
>>944
多分語義をわざわざ意識していないと思われ

976 名前:デフォルトの名無しさん [2019/06/16(日) 21:19:48.09 ID:paRCIAHRa.net]
>>942
オブジェクト指向言語のクラスだとプロパティでゲッターやセッター作る事があるが、ゲッターは普通は引数なしだな。
で、そういう言語ではだいたいはメソッドの引数なしで ()にしとけばC言語での(void)と同じ意味になる。

977 名前:蟻人間 mailto:sage [2019/06/16(日) 21:39:10.07 ID:KLVL0nwc0.net]
機能という意味で言いたいときは、functionalityという単語もある。

978 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 22:26:00.96 ID:rIa5AgZza.net]
ゲッターセッター自体が、本当にそれ要るのかって思うこと多いよ。
手元にインスタンス持ってるわけだしさ。

979 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:14:47.03 ID:2lhSAUjOM.net]
ゲッターセッターはインスタンス変数を隠蔽化することでインスタンス間の結合強度を下げるのが目的
なんでもなんでもインスタンス内部の構造に直接アクセスするとOOPの意味がない

980 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:22:32.20 ID:rIa5AgZza.net]
いや、ゲッター使うんだったら隠蔽できてないじゃん。

981 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:34:39.49 ID:Fv7+hlk/0.net]
昔ゲッターセッターってスレッドセーフにするための仕組みだと思ってた。
それくらいしか意味が思いつかなかった…



982 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:43:48.77 ID:3o8UCwiCa.net]
そうね、なんか前後に処理を入れるくらいの使い方はある。
でもそもそもその値を使う処理をそのクラスに持たせるのが隠蔽ということだね。

983 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 23:45:38.60 ID:7nwjMCFt0.net]
今の仕組み上での利点としては
GetterSetter作ることで
インターフェースに適合させれるようになる

Cは知らん






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef