ポインタはどうやって ..
[2ch|▼Menu]
720:デフォルトの名無しさん
07/12/22 16:25:29
>>717
ポインタ=何かを指す=指向性のあるもの。よって、
char *cp は「char型へのポインタ」
void **pp は「void型へのポインタへのポインタ」

721:デフォルトの名無しさん
07/12/22 16:27:03
うん

722:デフォルトの名無しさん
07/12/22 16:28:10
>>720
それでもいいけどね、「へ」は無くてもいいんだよ。

723:デフォルトの名無しさん
07/12/22 16:35:02
>>720
型は指してないんじゃね?

724:デフォルトの名無しさん
07/12/22 16:43:12
俺も意識して
「〜のポインタ」とか「関数ポインタ」とかじゃなくて
「〜へのポインタ」って言ってる

725:デフォルトの名無しさん
07/12/22 16:48:16
それでも通じるからいいんじゃね

726:デフォルトの名無しさん
07/12/22 16:48:18
「へ」は重要だ。「へ」があることによって、何かを指してると認識できる。
「〜のポインタ」だけだと意味が通じない。

…ということを言いたかった。

727:デフォルトの名無しさん
07/12/22 16:48:59
いや「へ」はなくても通じるんだよ

728:デフォルトの名無しさん
07/12/22 16:53:22
そもそもポインタって何かを指すものじゃん

729:デフォルトの名無しさん
07/12/22 17:32:03
初心者にとって、という話だろ?「へ」はあったほうがいいよ。
既に理解してる人にはどっちでもいい。

730:デフォルトの名無しさん
07/12/22 17:38:55
初心者にとっても有っても無くても同じ。

731:デフォルトの名無しさん
07/12/22 17:56:14
じゃあvoid ***pppはなんていうの?
char ****cpppはなんていうの?

732:デフォルトの名無しさん
07/12/22 19:01:12
そんなものは出てきてはいけないw

733:デフォルトの名無しさん
07/12/22 19:53:13
      ___    ━┓
    / ―\   ┏┛
  /ノ  (●)\  ・
. | (●)   ⌒)\
. |   (__ノ ̄  |
  \        /
    \     _ノ
    /´     `\
     |       |
     |       |
           ___   ━┓
         / ―  \  ┏┛
        /  (●)  \ヽ ・
       /   (⌒  (●) /
       /      ̄ヽ__) /
.    /´     ___/
    |        \
    |        |

734:デフォルトの名無しさん
07/12/22 20:38:12
「への」に1票

735:デフォルトの名無しさん
07/12/22 22:39:37
>>731
void ***pppやchar ****cpppなんて使う機会ない


736:デフォルトの名無しさん
07/12/23 02:26:02
へ へ
の の
 も
 へ

737:デフォルトの名無しさん
07/12/23 04:23:45
>>731
初心者がそんなもの使うかアホ
極論に持って行こうとするなよボケ

738:デフォルトの名無しさん
07/12/23 13:59:37
ダブルポインタでええやん。

739:デフォルトの名無しさん
07/12/23 14:23:10
じゃあダブポで

740:デフォルトの名無しさん
07/12/23 14:23:33
ゾッ

741:デフォルトの名無しさん
07/12/25 02:33:11
**のまま使ってる時点でほとんどクソコードだろ。
ふつうtypedefにするかstructにいれる。

742:デフォルトの名無しさん
07/12/25 09:29:32
いやいや、ある構造体の領域をヒープから確保する関数の場合とか、
**を渡した方が自然な場合もある。


743:デフォルトの名無しさん
07/12/25 13:07:01
どうせならデュアルポインタのほうがかっこよくね?

744:デフォルトの名無しさん
07/12/25 14:07:43
クアッドポインタにオクタポインタっすね

745:デフォルトの名無しさん
07/12/25 17:19:37
ポンタでよくね?響きが萌える

746:デフォルトの名無しさん
07/12/25 17:22:22
ポイポインタ

747:デフォルトの名無しさん
07/12/25 20:46:28
つ[*&]

748:デフォルトの名無しさん
07/12/25 21:01:54
ポインヨ

749:デフォルトの名無しさん
07/12/25 22:06:00
>>745
あのjunkyのおっさんですか?


750:デフォルトの名無しさん
07/12/26 00:05:43
ツインポインタ

751:デフォルトの名無しさん
07/12/26 00:39:04
ポインポイン

752:デフォルトの名無しさん
07/12/26 00:40:28
ポインティングゥー!ポインタァー!!!

753:デフォルトの名無しさん
07/12/26 02:17:22
日本語でいいだろ。「二次ポインタ 」

754:デフォルトの名無しさん
07/12/26 02:42:06
「ポインタ」も日本語にしろ

755:デフォルトの名無しさん
07/12/26 02:46:15
刺す人

756:デフォルトの名無しさん
07/12/26 02:46:48
そういわれればポインタの日本語訳って見かけないね
イテレータは反復子と訳されるのに

757:デフォルトの名無しさん
07/12/26 02:55:56
じゃ、「二次指示子」


758:デフォルトの名無しさん
07/12/26 19:59:17
ポインタの和訳は…そうだな…「オブジェクトリファレンス」ってのはどうだい?

759:デフォルトの名無しさん
07/12/27 03:35:43
参照じゃねーかw

760:デフォルトの名無しさん
07/12/27 05:40:44
その前に突っ込むところがあるだろw

761:デフォルトの名無しさん
07/12/27 07:59:20
ポインタはウルトラマンセブンに出てくる乗り物だよ

762:デフォルトの名無しさん
07/12/27 13:16:11
ウルトラマンのやつは「ポ↓イ↑ン↑タ↓ー↓」
コンピュータ用語のほうは「ポ↑イ↑ン↓タ↓ー↓」

763:デフォルトの名無しさん
07/12/27 14:43:31
違うだろ。

764:デフォルトの名無しさん
07/12/27 16:35:25
和訳なら矢印だな

765:デフォルトの名無しさん
07/12/27 18:19:45
int *ip
int* ip
ptr<int> ip
1番目より2番目の方が、2番目より3番目の方がわかりやすいと思うんだけどどうよ。

766:デフォルトの名無しさん
07/12/27 18:26:25
どうといわれても

767:デフォルトの名無しさん
07/12/27 18:42:59
ポインタ宣言子と間接参照演算子が別の記号だったら混乱起こさなかったのに。

768:デフォルトの名無しさん
07/12/27 19:10:47
C++のスマートポインタはその点で気が利いてる。
Cだと表現しようがないんだけど。

769:デフォルトの名無しさん
07/12/27 19:54:56
いまさら宣言の記法に注文つけてどうなる。


770:デフォルトの名無しさん
07/12/27 20:27:21
宣言の記法に注文付けたい奴は
typedef int* intptr;
とでもしやがれってんだ。
こんな事してるソース見たことはないが
でもwin32apiのソース読むと
typedefしまくりで、あんぐりする。

771:デフォルトの名無しさん
07/12/27 20:54:56
int* p, q;

772:デフォルトの名無しさん
07/12/27 21:47:44
int q, *p;
これと>>771が等価ってのはひどい。

773:デフォルトの名無しさん
07/12/27 21:47:47
>ポインタのポインタ
ハンドル…。

774:デフォルトの名無しさん
07/12/28 06:51:30
>>773
昔のMac以外にそういう呼び方をする流儀ってあるのか

775:デフォルトの名無しさん
07/12/28 07:22:09
>>774
別に流儀じゃなくて、一つのメモリ管理モデルとしてあるわけで。
(MacOSに影響受けているから当然と言えば当然だけど)PalmOSでもハンドルで管理していたし。

776:デフォルトの名無しさん
07/12/29 12:23:49
string使えはええやん。

777:デフォルトの名無しさん
07/12/29 13:04:32
は?

778:デフォルトの名無しさん
07/12/29 16:26:01
CPUエミュレータ作るとき、関数ポインタの配列を使いまくった。

779:デフォルトの名無しさん
08/01/05 06:19:59
クラスのメンバ関数の宣言にvirtualを使用すると関数ポインタになる件に関して
クラスの変数の初期化が面倒だからmemset(this,NULL,sizeof(*this))でうっかりvirtualを含むクラスを初期化してしまうと実行時エラーにw

780:デフォルトの名無しさん
08/01/05 10:19:27
あたりまえやん

781:デフォルトの名無しさん
08/01/09 01:12:26
>クラスの変数の初期化が面倒だから
そういう用途にはmemset使うなってエロイ人が言ってたよ。

782:デフォルトの名無しさん
08/01/09 19:58:20
memsetなんてもうずーっと使ってないなー

783:デフォルトの名無しさん
08/01/09 20:01:49
>>779
>memset(this,NULL,sizeof(*this))
ここでNULL使うのはおかしくね?

784:デフォルトの名無しさん
08/01/09 22:14:45
そもそもmemset()使うのがおかしいからどうでもいいよ。

785:デフォルトの名無しさん
08/01/09 22:47:58
URLリンク(www.kijineko.co.jp)
>局所変数、特に集成体を宣言した後、実際に必要かどうかに関わらず、必ず memset でゼロクリアする人は大勢います。
>しかし、そんなコードを見かけたら、それを書いた人のコードはすべて疑ってかかった方がよいかもしれません。

786:デフォルトの名無しさん
08/01/09 22:55:34
構造体単体でもmemsetする奴は危険だよ

787:デフォルトの名無しさん
08/01/09 23:03:41
別にmemsetそのものは危険じゃないよ。

788:デフォルトの名無しさん
08/01/09 23:09:05
する奴は
って書いてある

789:デフォルトの名無しさん
08/01/09 23:10:03
うん、そうだね。書いてあるね。

でもそんなことは関係なしにmemsetそのものは危険じゃないよ。

790:デフォルトの名無しさん
08/01/09 23:12:30
ポインタと全然関係ない話題ですねw

791:デフォルトの名無しさん
08/01/09 23:17:06
struct A a;
memset(&a, 0x00, sizeof(struct A));
もう馬鹿かとw

こんな後に

if( a.hoge != NULL)

とかやってる奴ちょっと来い
ぬっこしてやるから

792:デフォルトの名無しさん
08/01/09 23:20:21
勝手にすればぁ〜

793:デフォルトの名無しさん
08/01/11 05:16:33
局所変数の初期化って不要なの?

struct {
int a;
int b
int c;
} data;

struct data;
data.a = 0;

とやったとき、bとcには何が入っているのか確定してる?

794:デフォルトの名無しさん
08/01/11 06:47:12
もちろん不定

795:デフォルトの名無しさん
08/01/11 07:40:39
>>793
スレ違い。まぁ、そもそもコンパイル通らないだろうからどうでもいいけど。

796:デフォルトの名無しさん
08/01/11 09:06:04
構造体を初期化するのにmemset()を使わないなら、memset()なんて何に使うのさ?
そもそもゼロクリアなんていらねーよ、って話?

797:デフォルトの名無しさん
08/01/11 10:27:06
>>796
そもそも NULL == アドレス0 って保証はないわけなんだが


798:デフォルトの名無しさん
08/01/11 11:20:52
>>797
メンバにポインタが含まれる構造体の話か。でもそれなら、

struct DATA data[10] = {0};

という書き方も正しい保障は無いということになるよね。どうすりゃいいの?

799:デフォルトの名無しさん
08/01/11 12:05:18
={0} は正しい。memsetでゼロクリアするのとは異なる。

800:デフォルトの名無しさん
08/01/11 12:14:52
>>799
>>797

801:デフォルトの名無しさん
08/01/11 13:42:40
>>800
void *p = 0;
などとしたとき、p はアドレス 0 を指すわけじゃないぞ。
定数 0 は処理系依存のヌルポインタのビットパターンを作り出す。

struct DATA data = {0}; は、構造体 DATA の各メンバを
定数の 0 (ビットパターンが 0 なわけではない) で初期化するから、大丈夫だよ。

802:デフォルトの名無しさん
08/01/11 18:47:35
釣られすぎ

803:デフォルトの名無しさん
08/01/11 22:09:46
なるほど、釣りだったということにしたいわけか

804:デフォルトの名無しさん
08/01/11 22:26:20
ヌルポ インタ

805:デフォルトの名無しさん
08/01/12 00:41:13
>>804
ガッ

806:デフォルトの名無しさん
08/01/14 13:46:21
今はVSでクラスなんかをガシガシ使ってるから使わないけど、
一昔前にUNIXで開発してた頃はstructでデータ構造を設計して、
使用時には
memset(&data, 0x00, sizeof(data));
などのように初期化してから使う、というのが常套句だったよ。俺は。

807:デフォルトの名無しさん
08/01/14 15:09:53
はい、スレの皆さん
新年特別DQN >>806入りました〜

かわいがってやってください。w

808:806
08/01/14 17:20:45
■データ構成
  #define DATAMAX 255
  struct {
    struct {
      int code;
      char name[16];
    } table[DATAMAX];
  } data;

■初期化
  memset(&data, 0x00, sizeof(data));

■DB等からセット
  for(i=0; i<DATAMAX; i++) {
    data.table[i].a = a;
    data.table[i].b = b;
  }

■取得関数
  char empty[16];
  char *getName(char *code)
  {
    for(i=0; i<DATAMAX; i++)
      return data.table[i].name;
    return empty;
  }
■使用
  strcpy(name, getName(code));

809:806
08/01/14 17:21:05
>>807
かなりはしょってるが、上のレスのようにやってた。
DQN?俺がDQN?
他人に頼らず、テメーだけの力で批判でも何でもしてみろや。
他力本願な口だけ野郎。

810:デフォルトの名無しさん
08/01/14 17:35:52
コンストラクタで初期化してメンバは隠蔽した方がいいと思う

811:デフォルトの名無しさん
08/01/14 17:53:10
【虎の威を借る狐】

他人の権勢に頼って威張るザコのたとえ

812:デフォルトの名無しさん
08/01/14 18:12:21
>>809
本当にそんな汎用性のないキモイおもちゃ作り
ずっとやってたの?w

取得関数とかクエリ合わせてチューニングも
選択もできねーしこんな設計じゃ拡張性もない

ゴミすぎるだろw?

813:デフォルトの名無しさん
08/01/14 18:24:30
>>806
WindowsAPIのほとんどは今もそうだね

814:デフォルトの名無しさん
08/01/14 18:46:28
>>809
DQNかどうかは兎も角、>808を書いている時点でお郷が知れている。

815:デフォルトの名無しさん
08/01/14 18:53:08
やっぱり>>806は痛い奴だったか
そんな臭いがプンプンしたしなぁ

反論してみ?


816:デフォルトの名無しさん
08/01/14 18:58:26
お前のかあちゃんデベソ

817:デフォルトの名無しさん
08/01/14 18:59:35
きさまっ!いってはならないことをぉおぉぉおおおお

818:デフォルトの名無しさん
08/01/15 00:06:55
環境や用途によってやり方は違うだろうに「キモイ」って評価しちゃう奴はある意味スゲェと思う。

819:デフォルトの名無しさん
08/01/15 00:23:30
>>818
OSS宗教様達は多いよ
リーなんちゃらという変態指導者の
影響だろうけど

自分達の受け入れたくないコード=グロ
って定義だし。

820:デフォルトの名無しさん
08/01/15 00:35:04
実際見たら、グロなんだろ。

821:デフォルトの名無しさん
08/01/15 01:31:10
グロいものほど美味い。これは定説です。

822:デフォルトの名無しさん
08/01/15 07:03:52
ポインタ使った事無いから事故にならなかったんだろ。

こっそりやってるなら、どうせわからないからいいけど、
堂々と自慢されると、やっぱりな、あれだよ・・・


823:796
08/01/15 09:15:50
よーするに、memset()は使い道が無いってことかい?

824:デフォルトの名無しさん
08/01/15 10:40:09
>>823
環境依存でもよくて、標準の真っ当なコードに較べれば多少は速いかもしれないコードを使いたくて、
Intrinsicが用意されていないか使えなくて、インラインアセンブラが用意されていないか使えなくて、
他の手段が見つからないか、過去の遺物を使う為に必要。

825:デフォルトの名無しさん
08/01/15 12:05:51
とりあえず書いとけば誰かが直してくれるさ

826:808
08/01/15 14:26:44
まともな反論は>>812くらいか。
かなりはしょってて共通の関数なんかをすべて省いてるから>>812の感想はもっともだけど、
実際の事務処理アプリの現場ではその「キモイおもちゃ作り」とやらが蔓延していたのもまた
事実としてあるんだから、自分だけ高みから見下して一蹴してしまうすような>>812は、俺には
少し世間知らずに見えてしまうな。

>>815
「やっぱり」ってなんだ?
テメーで反論せずに誰かに反論してもらって「やっぱり」って思ったの?
まさに>>811に出てる「虎の威を借る狐」=ザコだなお前。
あと「反論してみ?」って見下してるけど、テメーは何も言ってないよねw

なんなんだお前は〜w

827:デフォルトの名無しさん
08/01/15 14:27:45
こんなネタで盛り上がれるお前らの時間の贅沢な使い方に脱糞

828:808
08/01/15 14:31:40
このスレ、極少数は経験も知識も豊富っぽいのがいるかも知れないけど、
その他はザコばっかだね。しかも性格が悪すぎ。
>>806に対しての>>807は何だ。
知識も経験もないけど一方的に悪口言ってストレス解消ですか?
反論したいならテメーでしろ。
できないなら実のある話しろやボケ。
だから過疎るんだよこの板。

829:デフォルトの名無しさん
08/01/15 14:33:00
うん。

830:デフォルトの名無しさん
08/01/15 15:49:25
血圧が高いんじゃない?
高血圧は万病の元だよ。
まじで心配

831:デフォルトの名無しさん
08/01/15 17:50:03
>>828
で、ちみはポインタの何がわからなくて躓いてるんだ?

832:デフォルトの名無しさん
08/01/15 18:12:13
ポインタとmemsetって関係なくね?

833:デフォルトの名無しさん
08/01/15 18:19:10
もとは、ポインタをビットパターン0にしちゃだめだろ、って話だったけどな。

834:デフォルトの名無しさん
08/01/15 19:26:38
>>810といい、>>816>>817の自作自演といい、ガキが多いのは感じる
ゆとりって言葉は嫌いだけどつい使ってしまいそうな程

835:デフォルトの名無しさん
08/01/15 19:31:55
memsetの話出てからこのスレつまんなくなった

836:デフォルトの名無しさん
08/01/15 19:48:20
どこまで行けば面白くなるのか遡ってみたら>>1に到達してしまった

837:デフォルトの名無しさん
08/01/15 19:51:28
>>834とか>>828あたりで十分面白いだろ。


838:デフォルトの名無しさん
08/01/15 21:15:09
結局memsetで初期化することの問題点は、
浮動小数点数やポインタの内部表現が環境依存であるから
0.0やNULLに初期化されるとは限らないということだけ?

839:デフォルトの名無しさん
08/01/15 22:02:23
>>838 そだよ
つか, memset なんて組み込みやるときの bss の初期化にしか使った事ねぇし…


840:デフォルトの名無しさん
08/01/16 12:36:15
某A賞のシステムでもそんなの誰も気にせずmemsetしてるけどな

841:デフォルトの名無しさん
08/01/16 13:14:03
Cでgotoは絶対に使ってはいけない、という神話に似てる

842:デフォルトの名無しさん
08/01/16 13:51:46
>>835-837
m9(・∀・)自作自演だろ!!

違うかな?
たぶん>>816-817と同一人物と見た。もしこの推測が合っていたら、
おまいは姑息で卑怯なこざかしい人ですね

843:デフォルトの名無しさん
08/01/16 14:04:59
まじで病院行け。

844:デフォルトの名無しさん
08/01/16 14:44:02
835は俺です
他は違います

845:デフォルトの名無しさん
08/01/16 15:18:02
頭のおかしい人にマジレスしてもw

846:デフォルトの名無しさん
08/01/17 09:28:36
          __,.  -─-- 、_
        , - ' _,´ --─‐-   )
      ,イ´__-___,. -‐ '__,. - '´
      `ー----, - ' ´ ̄ ``  、__
         __,ィ            ヽ. `ヽ.
      ,  '⌒Y  /     、ヽ    ヽ  ヽ.
     /    /  i   /l/|_ハ li  l i   li   ハ
.    // 〃 /l  i|j_,.//‐'/  lTト l、l   j N i |
   {イ  l  / l  li //___    リ_lノ lル' lハ. ソ  ___◎_r‐ロユ
    i| /レ/l l  l v'´ ̄  , ´ ̄`イ  !| ll,ハ └─‐┐ナ┐┌┘ _  ヘ____
    ハ| ll∧ハヽ ト、 '''' r==┐ '''' /l jハ| ll ll    /./┌┘└┬┘└┼──┘ロコ┌i
   〃  ‖ レ'¨´ヽiへ. _ 、__,ノ ,.イ/|/ ノ ll l|   </   ̄L.l ̄ ̄L.lL.!         ┌┘|
  ll    ll {   ⌒ヽ_/ } ー‐<.__  ′  l| ‖
  ‖    ‖ ヽ,   /、 〈   |:::::::| `ヽ      ‖
  ‖       {.  ハ ヽ Y`‐┴、::::v  l      ‖
  ‖      |iヽ{ ヽ_ゾノ‐一’::::ヽ. |      ‖
  ‖      |i:::::`¨´-- :::......:...:.:.::.}|     ‖
  ‖      |i::::::ヽ._:::_:::::::::::::::::::_ノ |     ‖
  ‖      |i::::::::::::i___:::::::::::/  |
           jj::::::::r┴-- `ー‐ '⌒ |
         〃:::::::マ二      _,ノ
       //::::::::::::i ー 一 '´ ̄::.
       ,','::::::::::::::i::::::::::::::::::::::i::::::ヽ

847:デフォルトの名無しさん
08/01/18 13:58:42
ぴぴるぴるぴるぴぴるぴ〜

848:デフォルトの名無しさん
08/01/18 16:55:30
memsetだってwin32api使ってたらよく使うし
まぁ、ようは、どんな関数でも使う奴しだいだろ

849:デフォルトの名無しさん
08/01/18 22:05:01
ほとんど見かけないようなプラットフォーム向けにも移植性を確保しておきたいかどうかだな
zlibみたいなライブラリではそうする価値があるかもしれないが、俺が書くようなコードではどうでもいい…

850:デフォルトの名無しさん
08/01/18 22:27:36
>>849
スピード命のコードだと, 内周ループで数エントリの構造体を
memset するのってやたらコストがでかい。
実際には、サブルーチンコールのオーバーヘッドがでかいんだが…

去年 MPEG 関連の仕事を途中から引き継いだんだけど、とろくって
使い物にならなかった元のコードの memset を代入文に変えただけ
で実行時間 60% 程度まで短くなった。


851:デフォルトの名無しさん
08/01/18 22:35:04
それは使っているコンパイラが悪いような希ガス。

852:デフォルトの名無しさん
08/01/18 22:35:30
>>850
memset初期化を使うのは、システム起動時か、再起動時でしょ。
あとはオブジェクトが生成されたときとか。

頻繁に生成、破棄を繰り返すようなオブジェクトで、システム上重要な
パフォーマンスに影響をあたえるものにたいして、memset初期化をするかしないか
というのは「高速化」の話。memset初期化のよしあしの話ではない。

853:デフォルトの名無しさん
08/01/18 22:35:42
>>850
まぁそれはまた別の話かと

854:デフォルトの名無しさん
08/01/18 22:54:00
>>851
それは言えてるんだが、組み込み物ではコンパイラの選択肢は限られる。
ましてや、クライアント指定のコンパイラだ

>>852
> システム上重要なパフォーマンスに影響をあたえるもの
に、対して memset で初期化しておいて、直後にその大半を意味のある
値で再度上書きしてた。
> よしあしの話ではない。
かもしれないが、元のコードを書いた奴の神経をうたがったわな。


855:デフォルトの名無しさん
08/01/18 22:57:38
Win32APIみたいに設定項目が山のようにあり、
常に全部を使うわけでもなく、
0で埋められる項目の頻度が高ければ十分ありだろ。
C/C++以外では今時クラスインスタンス0フィルされる言語も珍しくもないし。
ケースを指定するでもなく一般論としてあーだこーだいってる奴はアフォ。

856:デフォルトの名無しさん
08/01/18 23:11:50
>>855
いいえ。

高が、struct someStruct foo = {0} で済むことのためにmemset()を使う必然性は殆どありませんね。
それがstruct someStruct * foo = malloc(sizeof(* foo))した領域でも同じこと。

857:デフォルトの名無しさん
08/01/18 23:29:25
memset使わないで

struct someStruct * foo
何か処理
foo = {0};って感じでまた初期化すればいいだけ

memset使うやつは馬鹿今の公開されている
まともなソースでmemset使ってるのコードは皆無だぞ?

858:デフォルトの名無しさん
08/01/18 23:31:27
>>857
>foo = {0};
それ無理じゃね

859:デフォルトの名無しさん
08/01/18 23:38:01
0fillがいかんからmemsetがいかんに話がずれてきてるな

860:デフォルトの名無しさん
08/01/18 23:38:59
パフォーマンスだけに限って言うと、memsetをインライン展開するコンパイラなら使う事もある。

861:デフォルトの名無しさん
08/01/18 23:50:15
>高が、struct someStruct foo = {0} で済むことのため

宣言と同時に初期化しない場合はどうするの?
というよりこれってコンパイラ依存なんじゃないの?

862:デフォルトの名無しさん
08/01/18 23:51:49
memsetは危険だから使うなって
manとかMSDNに記述あるんだな

863:デフォルトの名無しさん
08/01/18 23:54:46
>>862
具体的に書いてくれ。調べるの面倒

864:デフォルトの名無しさん
08/01/18 23:55:37
お前は何を言っているんだ

865:デフォルトの名無しさん
08/01/19 00:05:01
manページより:

>説明
>memset() は s で示されるメモリ領域の先頭から n バイトを c で埋める。
>返り値
>memset() は s へのポインタを返す。
>準拠
>SVr4, 4.3BSD, C89, C99, POSIX.1-2001.

俺の目がおかしいのかもしれないが危険性がどこにもみつけられない。
MSDNとか読むきしないから他のヤツよろしく。

866:デフォルトの名無しさん
08/01/19 00:09:13
>memset() は s で示されるメモリ領域の先頭から n バイトを c で埋める。
これは嘘だろw
nバイトをcで埋める可能性もあるが正解

867:デフォルトの名無しさん
08/01/19 00:10:50
>>866
日本語でおk

868:デフォルトの名無しさん
08/01/19 00:13:06


          冬 真 っ 盛 り 
 


869:デフォルトの名無しさん
08/01/19 00:15:43
埋めない可能性もあるのか?
まぁSEGVるかもしれんが

870:デフォルトの名無しさん
08/01/19 00:18:25
>>869
>まぁSEGVるかもしれんが

>>866がそんなことで「埋めない可能性がある」とかバカなこというわけないじゃないか。
>>866は、きっともっと違った根拠があっていってるのだよ。

871:デフォルトの名無しさん
08/01/19 00:19:58
ECCメモリを使っていない場合に起こるのかもしれないなw

872:デフォルトの名無しさん
08/01/19 00:27:17
>>871
ワロスwww
その「可能性」言い出したら、マニュアルなんて書けない気がするがwww

873:デフォルトの名無しさん
08/01/19 00:28:46
釣り堀だなw

874:デフォルトの名無しさん
08/01/19 00:35:45
>>867-873
こんなに釣れた


875:デフォルトの名無しさん
08/01/19 00:40:41
>>874
トイウコトニシタイノデスネ

876:デフォルトの名無しさん
08/01/19 12:18:16
struct someStruct foo = {0}
これはできるけど、動的確保した構造体だと無理じゃね?

877:デフォルトの名無しさん
08/01/19 12:21:34
>>876
C99は可能
お前あほ杉w

878:デフォルトの名無しさん
08/01/19 14:00:41
>>876
struct someStruct * foo = malloc(sizeof(* foo));
struct someStruct blank = {0};
* foo = blank;
よほど気の利かないコンパイラでもなければ、blankの実態は作られない。

879:デフォルトの名無しさん
08/01/19 14:06:25
なんと言う糞コードというか糞スレ・・・

880:デフォルトの名無しさん
08/01/19 14:14:39
>struct someStruct blank = {0};

こんなコンパイラがサポートしている「かもしれない」機能を
「使わないのはおかしい」と主張されてもな。

881:デフォルトの名無しさん
08/01/19 14:20:18
>コンパイラがサポートしている「かもしれない」機能
そうなの?

882:デフォルトの名無しさん
08/01/19 14:21:52
>>880
サポートしていないコンパイラをご存知ならご提示くださいませ。
以後規格外品として、広く存在を知らしめてまいりたいと思いますので。

883:デフォルトの名無しさん
08/01/19 14:22:15
>>881
そうだよ

884:デフォルトの名無しさん
08/01/19 14:23:16
>>882
むかし使ってた、ARMの純正コンパイラではサポートされてなかったな。

885:デフォルトの名無しさん
08/01/19 14:23:35
>>882
組み込み業界じゃザラにあるが…


886:デフォルトの名無しさん
08/01/19 14:24:52
もし論点があってそれを覚えているのなら3行にまとめてくれたまへ

887:デフォルトの名無しさん
08/01/19 14:26:15
つまり、昔のARM純正コンパイラは構造体の初期化ができないと?

888:デフォルトの名無しさん
08/01/19 14:26:47
>>884, 885
つか、>>882 は「Cが処理系に依存しない高級言語だ」って
思ってる可愛そうな奴なんだよ


889:デフォルトの名無しさん
08/01/19 14:28:01
>>887
いや、全部のメンバに代入すればOK

struct A {
 int a;
 int b;
};

OK:struct A a = {0, 0};
NG:struct A a = {0};

890:デフォルトの名無しさん
08/01/19 15:42:06
お前らまずは日本語を学べ
スレタイが読めるようになったらまた来い

891:デフォルトの名無しさん
08/01/19 19:37:52
ポインタは友達!

892:デフォルトの名無しさん
08/01/19 21:53:40
ポインタ「げ。また>>891だよ・・・マジウザイ・・・

893:デフォルトの名無しさん
08/01/20 01:38:56
ひでえw

894:デフォルトの名無しさん
08/01/20 20:51:06
昔記事を見て馬鹿にしてた教材が一番わかりやすかった

895:デフォルトの名無しさん
08/01/20 22:18:11
memsetを使う利点は使い方によっては構造体の初期化のソースを短く出来る事かな
巨大な行列を持つ構造体を初期化するとか普通に代入でまかなうとマジで馬鹿にならないくらいソースが膨らむから
ループで回して初期化するのも遅いしな

896:デフォルトの名無しさん
08/01/21 00:52:45
Cプログラマ必須テキストです!

URLリンク(mori.eco.to)

897:デフォルトの名無しさん
08/01/21 01:23:47
>>896
どうでもいいのだが・・・
>当然ですが、あらゆる標準関数の使用を認めません。
>
>・strlen() を自作せよ。
>・strcat() を自作せよ。

標準関数の使用を認めないくらいなら、strlenとかstrcatとかキケンな
関数じゃなくて、ふつうはもっと安全な代替関数を自作するでしょ。

898:デフォルトの名無しさん
08/01/21 02:16:15
>>896
>C++未経験ながら、1人でC++の10万行のソースコードの保守及び、3万行の開発を行った。
これ単にCとして使ったとかじゃ

899:デフォルトの名無しさん
08/01/21 02:38:15
いまどき行数で規模示すなんて

クラス数と各クラスのメソッド数で競ってくれ

っつーかすれ違いか


900:デフォルトの名無しさん
08/01/21 02:57:11
競うなよ。どっちも少なければ少ないほど良い。

901:デフォルトの名無しさん
08/01/21 05:07:32
さすがにクラスは適切な数ってのがあるだろうな。

902:デフォルトの名無しさん
08/01/21 11:28:41
>>896は宣伝でマルチしてるから無視すべし

903:デフォルトの名無しさん
08/01/21 17:02:57
PIC等の単純なCPUで機械語でもやってアドレッシングモードを習えば
ポインタは理解出来るんじゃね? 余計に混乱するかな?


904:デフォルトの名無しさん
08/01/21 18:50:37
PICとかアドレッシングモードとかわけわかめなんだけどどうすれば習えるの?

905:デフォルトの名無しさん
08/01/21 19:33:40
PICは余計なところが気になりすぎ、16ビット以上推奨だな。
AVRとかHC08とかARMがいいんじゃね?

あと、アセンブラのアドレスはせいぜい指してる先のバイト数
の情報くらいしか持ってないから、ポインタまでには、まだまだ
壁があるのでよろしく。

906:デフォルトの名無しさん
08/01/21 20:47:32
>>895
おれは構造体を定義したら、必ずその初期化関数を作るけどな。
だからソースはさほど膨らまない。

まあその関数の中でmemsetをやっている場合もあるんだが、
それでも素のmemsetは使わないな。

907:デフォルトの名無しさん
08/01/21 21:43:28
動的にその行列のサイズが変わる、その平均が100X100から1000X1000近くになって
最悪5千近くなる行列は動的に変わるんで代入じゃ無理だし、ループでまわして初期化するよりはmemset使った方が速度は確保できるし
何が糞なんだかなぁと思うわw
まあ、動的に確保して中身をゼロクリアしたいのならcalloc使えって話だけどなw
しかし、途中で初期化したくなったらmemsetかな?

908:デフォルトの名無しさん
08/01/21 22:09:00
>>905
> あと、アセンブラのアドレスはせいぜい指してる先のバイト数
> の情報くらいしか持ってないから
TRON chip を否定したな!WwwWW


909:デフォルトの名無しさん
08/01/21 22:47:17
>>908
> TRON chip を否定したな!WwwWW

は? TRON Chipのポインタも、持ってる情報はアドレスだけですが?

ポインタに情報を持たせるのはLisp処理系とかで、ワードアラインの都合で
使わない下2bitに型の情報を入れ込んだりとか、アドレスが24ビットだった
68000用のやっぱりLisp処理系で上8bitに型の情報を入れたり、とか。

ポインタが本格的に(?)型の情報を持ってるアーキテクチャったらIBMの
System/38→AS/400とかだろ。

910:デフォルトの名無しさん
08/01/21 23:12:54
>>909
ショボいCPU使ってプログラムを作ると自分でポインタを作って管理しなきゃいけなくなるよ。
それでポインタがマスター出来るだろうと思う。

911:デフォルトの名無しさん
08/01/22 01:11:14
>>907
そういう0クリアする必要があるときのmemsetには、誰も異論を唱えていない。

912:デフォルトの名無しさん
08/01/22 01:16:18
>>907
それやるとどこか1バイトだけ
初期化されず危険というコンパイラもある

913:デフォルトの名無しさん
08/01/22 01:24:46
>>912
「そうする機能を持つ」ということと、「バグでその機能が働かない」というのを
ごっちゃにすると、ワケワカンナクなるからやめようぜ。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5397日前に更新/171 KB
担当:undef