せめてuintptr_t
870 :
デフォルトの名無しさん:2005/08/30(火) 18:59:49
UNIXにはポインタをint扱いするプログラムがいまだに溢れてる
>>870 ポインタとかアドレスを unsigned long と扱うコード
>>873 今となってはもはや昔ながらの伝統以外の意味は全くない
875 :
デフォルトの名無しさん:2005/08/31(水) 16:54:40
ポインタってどういう場面で使用されるんですか?
ポインタを多用するプログラムってどんなのがあるのでしょうか
Windows プログラム
Lisp処理系
881 :
デフォルトの名無しさん:2005/10/04(火) 12:52:03
ポインタ〜ッチ。いやぁ〜ん,まいっちんぐ。
まだこのスレあったのね。
ポインタはね、関数で複数の戻り値を返したい時にとても便利なんだお。
普通はreturnで一個しか返せないんだお。
>>883 戻り値は構造体のポインタであって
構造体そのものではない罠
構造体を返して何が悪い。
886 :
デフォルトの名無しさん:2005/10/08(土) 12:09:06
>>885 構造体は返せない。
構造体のポインタは返せるが。
構造体と構造体のポインタは別物。
そういうこと言ってるから、陰で時代錯誤の老害って言われるんだよ
事実なんだけど…
嘘教えるより100倍マシだと思うけど…
構造体返せるだろ?
つい最近返せるようになった。
>>889 構造体を返すプログラムのソース挙げて見れ。
つい最近?
typedef struct {
int a,b,c,d;
} E;
E foo(E ee){
return ee;
}
ANSIで標準化された1989年の時点で
構造体は返せるし渡せるようになっているんだけど
> 嘘教えるより100倍マシだと思うけど…
などと言いながら、平気でウソを教える。
だから「老害」なんだよ。
標準関数にもdivとか構造体を返す関数がある。
構造体が大きいとスタックに積む時間が何だかアレな気はする
まあ、構造体を返す関数の場合は、
一般的な実装では、暗黙の第一引数として呼び出し側がアドレスを渡して
そこに代入するんだけどな。
あと、レジスタで渡せるサイズだったらレジスタで返す実装もあった。
もちろん、渡す場合は全コピーだけど。
その昔、異様に大きな配列メンバを持つ構造体を定義して、
実体を返してみたら、実行速度が物凄く遅くなってワロタ。
Cでも配列を実体で返せる方法だと、馬鹿そのものの歓び方をした。
かって知ったる構造体なら値渡しでもいいがな。
気分的に32byte超えると悪いことしてる気がしてしまう
いや、なんとなく
まあ俺は32bit超えると悪いことしてる気がするが。
つまりグローバル変数しか使わないってことかい?
ポインタを返すんだろ
1byteじゃなくて32bitに限定しているから、64bitアプリでは破綻。
しかし16bitアプリでは二つのポインタが!!
二つのボイン
64bitアプリでも今の規格ではポインタは32bitだよなぁ確か。
↑
寝言は寝て言え
mixi でも糞壁って猛威を振るってんだな。
int* p; でも int *p; でも好きにすりゃええやん。
910 :
デフォルトの名無しさん:2005/10/18(火) 19:37:20
>>894 ANSI 以前の C でも構造体は返せるようになっていた。
しかしその後流行出したPCでのCコンパイラの実装では
使えないようになっているサブセットのやつが多かった。
実際使うと恐ろしく遅くなることがあって、使えても
使う人は少なかったのではないかと思う。
構造体を返す変数・・・fopenとか?
変数じゃねぇな関数だ(´Д`;)
fopenが返すのはポインタだが
巨大な構造体返す関数書くと戻り値を、コピーせずに
呼び出し側のスタックに直接書き込む言語もあったりするな。
>>916 最適化具合でそうなるコンパイラもありえるんじゃね?