[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 23:32 / Filesize : 137 KB / Number-of Response : 653
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C言語なら俺に聞け(入門編)Part 58



1 名前:デフォルトの名無しさん [2009/12/15(火) 23:42:55 ]
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 57
pc12.2ch.net/test/read.cgi/tech/1260020924/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★初心者、初級者の方は他の質問スレのほうが良いかもしれません。
例えば
【初心者歓迎】C/C++室 Ver.70【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1258873470/
とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 133代目
pc12.2ch.net/test/read.cgi/tech/1260532772/
★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

89 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 13:07:26 ]
>>84 が正解。
だが、マスク・アンマスク方が、結局わかりやすい。
(値の取り出し用、設定用のマクロも作る)


90 名前:デフォルトの名無しさん [2009/12/16(水) 18:55:11 ]
あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ぬああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ


PowerPCいい!!!!!!!!!!!!

割り込み処理ラク!!!!!!!!!!!
ベクタとかいらねえ、まんま関数を置けばいいんじゃん!!!!!!!!!!!!!!!!!!!!!!!!!


でも俺の中ではSH >>>> PowerPC
だけどな!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

91 名前:デフォルトの名無しさん [2009/12/16(水) 19:15:14 ]
やっぱ割り込みコントローラを自分で持ってる奴はいいなあ!!!!!

チョー気持ちいい
x86みたいにメンドクセーことしないで済む

ええなあ
ええ
ええぞ

92 名前:デフォルトの名無しさん [2009/12/16(水) 19:49:49 ]
ああもう素晴らしい
カウンタもついてる
SHみたいにナノセカンド単位でのカウンティングができる!!!!!!!!!
すばらしい!!!!!!!!!

OSのミリセカンドオーダーのスリープなんぞに頼らなくてもよい!!!!!!!!!!!!
蕎麦らしい!!!!!!!!!!

93 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 19:54:06 ]
すーぱーひたちとかネーミングがダサすぎて話しにならん

94 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 19:57:46 ]
はなしし?

95 名前:デフォルトの名無しさん [2009/12/16(水) 21:03:00 ]
ハードわからん奴カワイソス

96 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 21:04:07 ]
91 :デフォルトの名無しさん [] :2009/12/16(水) 19:15:14

なんか91というラベルがあって
デフォルトの名無しさんという配列があるように見える俺の専用ブラウザ。

97 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:01:48 ]
ncursesを使ってプログラム作ってます。(debian&gcc)
画面(端末)の背景全体を、特定の色にしようと思ったら
init_pairで指定した上でスペースで埋めないといかんのでしょうか?



98 名前:デフォルトの名無しさん [2009/12/16(水) 22:02:07 ]
*(unsigned int *)(0xAAAA)


というのが示すのは

int型のポインタが示す実体ですか?

99 名前: ◆QZaw55cn4c mailto:sage [2009/12/16(水) 22:10:43 ]
>>98
アラインメントを考えないことにすれば、そのとおりでしょうね。
ハードウェアよりな言い方をすれば、アドレス 0xaaaa から始まる int 型の変数の値ですね。

100 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:15:07 ]
謎のトリさん現る

101 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:15:43 ]
>98

「int型のポインタ」という言葉使いからして型がわかってないぞ。

*(unsigned int *)(0xAAAA)
の意味は
0xAAAAからsizeof(unsigned)分をunsignedとみたてて
アクセスしている。


102 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:20:35 ]
>>97
画面クリアの類でいいんじゃね?

103 名前:デフォルトの名無しさん [2009/12/16(水) 22:24:14 ]
>>99
ありがとうございます。


>>101

ではどのようにいったらよいのですか?


unsigned int型のポインタ??

104 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:34:35 ]
unsigned int*型の変数

まぁ別に難でもい伊田ろ。いい太古とはわ軽んだから

105 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:37:56 ]
そうそう、ポインタっつってもメモリのどっかに記憶されてる変数だから

106 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:49:22 ]
>>102
具体的には?
例えば、文字色を白、文字背景を青にして
なんも手を加えてない状態の端末背景が黒だと
文字のある所だけ背景が青になるんで、文字のないとこも
青色にしたいんですが。

107 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:54:55 ]
バカの言うことに惑わされんなよ
ポインタは通常の変数として規定されていない。



108 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:56:25 ]
バカがバカと罵るスレ

109 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:56:49 ]
>103

型名は宣言から識別子を抜いたもの。
よって
int *a;
の型名は「int *」日本語なら「intを指すポインタ型」だろうな。

よく「int型のポインタ」という人がいるが
int *a[10];
とかよめないだろ。

この場合の型名は「int *[10]」で日本語なら「intを指すポインタの配列[要素数10]」型。

int (*a)[10];
だったら
型名は「int (*)[10]」で日本語なら「intの配[要素数10]を指すポインタ」型


110 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:58:20 ]
C言語のプログラムをVisualC++で書いていて、そっちでは普通に動いていたのですが、
メモ帳にこぴぺしてCygWinで実行したら、

parse error before~

だとか

braces around scalar initializer

というようなエラーが出ます。
主に配列の宣言・初期化のあたりで発言するのですが。
何が原因なのでしょうか

111 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 22:58:41 ]
データの「型」を指すってのは有り得ない事だよな。
型は変数でもメモリのアドレスでもない。

112 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:00:14 ]
>>111
え?

113 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:13:06 ]
int *p=(int*)214F23BC;
pは214F23BCを指しているがintは指していない。

114 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:15:43 ]
int *p[10]は「int型の変数のアドレスを指すポインタ変数の配列[要素数10]」型
決して「intを指すポインタの配列[要素数10]」型ではないので間違えないように。

115 名前:デフォルトの名無しさん [2009/12/16(水) 23:18:25 ]
unsigned char TITLE[]="HOGE"

これはどういうこと?

116 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:19:58 ]
??

117 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:23:01 ]
>>115
HOGEという文字列の先頭へのchar型の変数を指すポインタ変数



118 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:25:51 ]
おいおい……

119 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:26:56 ]
>>177
char *x="abcde"
char x[]="abcde"
の区別ができてないバカ発見

120 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:27:09 ]
配列の初期化

121 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:27:39 ]
入門以前のやつは来るなよww
来ても良いけど回答者の側には来るなw

122 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:28:49 ]
アウトプットは学習効率を良くするからなあ

123 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:32:44 ]
>>119
117と177の区別ができてない馬鹿発見

124 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:32:54 ]
>>115
わざわざunsingedがついているところで、深読みをしてしまう。
昔は、char が unsigned のコンパイラも多かったなあ。

125 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:34:23 ]
>>115
書く場所によって意味が変わる。
関数の外なら
unsigned char TITLE[5]={'H','O','G','E','\0'};

の糖衣構文。

また、関数の中なら
auto unsigned char TITLE[5];
TITLE[0]="HOGE"[0];TITLE[1]="HOGE"[1];
TITLE[2]="HOGE"[2];TITLE[3]="HOGE"[3];
TITLE[4]="HOGE"[4];

の糖衣構文になる。


126 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:36:26 ]
補足すると、代入を strcpy に置き換えるコンパイラもある。

127 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:40:52 ]
>125

関数の外も中も同じ意味だぞ。

>126 (== 125?)

代入とstrcpyは別だろ。

unsigned char TITLE[]="HOGE"
は初期化であって代入ではない。

なんか昨日からポインタの知識が怪しい奴が回答側にいるな。

初級者は注意すること。
中級者は間違い探しをするとイイかも。



128 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:41:22 ]
入門者が入門者に適当を答えるスレです。
上級者様は上級者様専用のむずかしーいスレにいって戻ってくるなよ

129 名前:127 mailto:sage [2009/12/16(水) 23:43:58 ]
言い忘れたけど
unsigned char TITLE[]="HOGE"

のunsignedはない方がよいかも。

文字列リテラルの型はconst charの配列だから。


130 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:45:40 ]
125は、初心者が陥りやすい大きな間違いをしている。

131 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:46:07 ]
>>127 は、もはや荒らしの一種だな。

132 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:47:31 ]
>>128
荒らすな。

133 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:50:25 ]
>114

またわけのわからない読み方をするね。

宣言
int *p[10];
があるとき、pの型はint *[10]
ここまでは確定。

日本語にどう変換するかは規定されていないけどね。
あなたの日本語はよくわからない。

ポインタはポインタであって、アドレスではない。

アドレスを指すポインタ変数?


134 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:51:33 ]
127にとっては
int x=100;
これは初期化であって代入ではないらしい

135 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:51:51 ]
データ型ってのはサイズを示す指針だから、指しようがねえよw

136 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:54:08 ]
マイナスの値を取らない、取り得ないものだったら
明示的にunsignedを付けたほうがいい。
他人に読ますときは特に

137 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:55:49 ]
>113

>int *p=(int*)214F23BC;
>pは214F23BCを指しているがintは指していない。

pは214F23BCを指しているわけではない。
pの値が214F23BCであると言うだけ。

pは自分がどんな型を指しているか知っているので
*が適用されたときにどうやって値を取り出せばよいかわかる。

pが指しているのがintか、charか、struct{char x; short y; long z}なのかで
値の取り出し方が変わる。




138 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:58:05 ]
>134

>int x=100;
>これは初期化であって代入ではないらしい

その通りですがなにか?


139 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:58:15 ]
int *p[10];

これは普通に使うけど、

int (*p)[10];

これって使い道ある?
使ったことないぞ。


140 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:01:22 ]
上級者さまうぜぇ
関係ない話するなや
こんなところで「入門者バーカ」って言って悦にいってないでさっさと首つって市ね。

141 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:03:43 ]
>139

2次元配列を引数にとる変数の型。

void func(int p[10][10]);
のpの型がint (*p)[10]

後は組み込みでVRAMの先頭が与えられたときに
2次元配列として扱いたいときに、この型で領域の先頭を
指したりする。

142 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:04:20 ]
質問に答えず、質問とは無関係などうでもいい話には必死。
自分で回答する気はぜんぜんないくせに、間違った解答を見つけたとたん待ってましたとばかりにたたきにくる。
マジうぜぇわ。

143 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:05:01 ]
すくなくとも、このスレになってからは上級じゃなきゃできないような回答はひとつもないように見える。

144 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:05:14 ]
>>139
typedef int (*p)[10]
なら、稀によく使う

145 名前:厨房 ◆hfigpiEhOM [2009/12/17(木) 00:05:38 ]
ゲームの改造とかやりたいんですけど、C言語でできるようになりますか?

146 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:06:26 ]
プロアクションリプレイかコードフリークでも使ってろ

147 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:07:07 ]
このスレのローカルルール
上級者は荒らし



148 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:07:21 ]
ハッカーになりたいならCだけじゃ無理

149 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:07:46 ]
>110

問題の出るコードを貼ってみたら。
だけど環境依存の問題だろうから、
こっちがイイかも

【初心者歓迎】C/C++室 Ver.70【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1258873470/

150 名前:厨房 ◆hfigpiEhOM [2009/12/17(木) 00:10:45 ]
>>147>>148
ポインターがどうのとか言っていたので改造コードにはC言語の知識が必要なのかと思いました。
以前



151 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:15:50 ]
>>138
そうなんだけどさ、セクション配置かスタックに積むかで
バイナリレベルじゃ変わってくるじゃん?てことを言いたいんじゃないかとおも

152 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:33:52 ]
>>145
とりあえず、アセンブラだけでなく機械語も覚えろ。
改造だけなら、言語としてはこれだけの知識しか使用しない。

153 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:35:25 ]
実は、この5つすべて(Python, Java, C/C++, Perl, LISP)を勉強しておくのがいちばんいいのです。

これらはもっとも重要なハッキング用言語だというだけでなく、

それぞれプログラミングに対してまったく違ったアプローチをしているので、どれも非常に有益な勉強となるでしょう。

154 名前:厨房 ◆hfigpiEhOM [2009/12/17(木) 00:43:26 ]
>>152
アセンブリとか難しそうですね。
せめて自分でチートコード作れるくらいになりたいです。
まったくの初心者ですか今後ともよろしくお願いします。
ちなみに以前C言語も学習していましたが、ポインタで投げました。
また1からやり直したいと思います。


155 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:45:31 ]
これ試してみろ。違いが解るから。

#include <stdio.h>

char glob[]="HOGE";

void func(int n){
static char sta[]="HOGE";
char aut[]="HOGE";

printf("d%回目\n", n);
printf("global: %s\n", glob);
printf("static: %s\n", sta);
printf("auto: %s\n", aut);

glob[1] = 'A';
sta[1] = 'A';
aut[1] = 'A';
}

int main(){
func(1);
func(2);
return 0;
}


156 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:49:25 ]
>>153
C++ は要らねえな。

157 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 01:01:57 ]
Cに固執するアンチC++の哀れなこと



158 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 01:08:00 ]
条件によって変数の型を変えるプログラムって無理?
例えば
int a;
scanf("%d", &a);
switch (a)
{
  case 1:
    int b;
    break;

  case 2:
    double b;
    break;

  case 3:
    char b;
    break;
}

こんな感じで。


159 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 01:11:23 ]
C++のポジションはすでにレガシーとなっているよ。
普及してるが、FORTRAN、COBOLと同じ道を歩み始めている。

160 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 01:14:26 ]
int a;
scanf("%d", &a);
viod b;
switch (a)
{
  case 1:
    int c=(int)b;
    break;

  case 2:
    double c=(double)b;
    break;

  case 3:
    char c=(char)b;
    break;
}

161 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 01:29:59 ]
>>158
通常は、必要に応じてキャストすればいい。
つか、どうしたいんだ?


162 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 01:49:45 ]
>>158
無理。
たとえば、Windows の COM なら VARIANT型を使えば、なんとなくそれっぽいことができるが、入門レベルではない。

163 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 01:57:19 ]
目的にもよるんだが、「共用体」を調べてみるといい。
つか、その質問だけでは何がしたいのかが伝わってこないから答えられん。


164 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 02:23:46 ]
ユーザ関数に引数を渡す際に型を指定せずに処理がしたいんです。具体的には

ここをintでもcharでもいけるにしたい
        ↓
void function(double *v1)
{
  int i;
  for(i=0;i<10;i++)
  {
    //型の関係のない数値計算
    P[i]=〜
  }
}
ていうことです。

165 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 02:24:31 ]
んでいろいろ考えた結果
ユーザ関数ではとりあえずvoid*型でポインタを引数を受け取って、引数の中に型のタイプの情報(上のscanfのa)
を入れて、それに応じてキャストすればいけるかなと思ったわけです。

void function(void *v1,char a)
{
  int i;
  switch(a)
  {
  case 1:
    int *P;
    P=(int*)v1;
    break;

  case 2:
    double *P;
    P=(double*)v1;
    break;

  case 3:
    char *P;
    P=(char*)v1;
    break;
  }
  
  for(i=0;i<10;i++)
  {
    //型の関係のない数値計算
    P[i]=〜
  }
}


166 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 02:38:04 ]
ありえないな。
設計からやり直した方がいいよ。


167 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 03:00:09 ]
struct DATA
{
  int iheight;
  int iweight;
}

この様に定義された構造体データ(idataNum件)を
身長順にダブルポインタを使ってソートをかけたいのですが、
そのダブルポインタのスワップ処理が分からず困っています・・・。

void swap( DATA** stData_ptr, int idataNum)
{
  DATA* stSwap;
  for( int i = 0; i < idataNum-1; i++ )
  {
    for( int n = i + 1; n < idataNum; n++ )
    {
      if( (*stData_ptr + i )->iheight > (*stData_ptr + n )->iheight )
      {
        stSwap = ( *stData_ptr + i );
        ( *stData_ptr + i ) = ( *stData_ptr + n ) ;
        ( *stData_ptr + n ) = stSwap ;
      }
    }
  }
}

てな感じで自分なりに試行錯誤してみたのですが、どうしてもスワップ部でエラーが出てしまいます。
どうか、お力をお貸しして頂けないでしょうか?



168 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 03:02:53 ]
*(ポインタ+i)

169 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 03:16:59 ]
p[i]って書けばいいものをわざわざ足し算したりするからわけわからなくなってるっつーねん。
なんで変な書き方したがるかなぁ?

170 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 03:19:54 ]
え?

171 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 03:28:48 ]
>>168
ありがとうございます。

stSwap = *(stMyData+i);
*(stMyData+i) = *(stMyData+n);
*(stMyData+n) = stSwap;

このようにやってみたところ、一応コンパイルは通るのですが、
実行させてみるとメモリー違反っとなってしまいます・・・。

>>168
ごめんなさい。その書き方もあまり分からないので・・・・

172 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 04:59:27 ]
ありとあらゆるものをキャストする
この世の事実はすべてint型。
つまりint*型とint[]型とint型さえ使うことができればあらゆるプログラムの困難は解決する。

173 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 05:01:07 ]
>>164
マクロで無理矢理やるというおよそ非実用的な手段がある。
#define DEFINE_FUNCTION(type) \
void function_ ## type(type *v1) \
{ \
  int i; \
  for(i=0;i<10;i++) \
  { \
    P[i]=〜 \
  } \
}
そして、こんな風に引数として使いたい型だけマクロを並べる。
DEFINE_FUNCTION(int)
DEFINE_FUNCTION(dobule)
すると、それぞれ型に応じたfunction_int、funciton_doubleって関数が出来上がる。

こんなことするくらいだったら、C++のテンプレートを使ったほうがましなんだけど、ここはCのスレだし。

174 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 05:02:23 ]
テンプレートとかただのアヒルタイプだし。マジうける。
そんなものもint*型の前にはひれふすことになる。

175 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 07:32:49 ]
>>165
そういうときは、union使うといい

struct hoge {
 int data_type;  // 0:int 1:char 2:double ...
  union {
       char  c;
       int    i;
       double d;
    ...
  } u;
};


176 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 07:39:33 ]
>>175
いやその解は有りえんから

177 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 11:26:16 ]
void function(void *v1,char a)
{
  int i;
  for(i=0;i<10;i++)
  {
    //型に応じた数値計算
    switch(a)
    {
    case 1:
      //((int*)v1)[i];
      break;
    case 2:
      //((double*)v1)[i];
      break;
    case 3:
      //((char*)v1)[i];
      break;
    }
  }
}

こうはできないものかと妄想したが



178 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 12:59:18 ]
目的がわからんのだよ。
そんなのが必要になる状況なんてありえないだろ。

179 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 13:20:43 ]
型を別の引数で指定するくらいなら関数を分けるのが最善手。
そうでなけりゃ C++ で template 使え。

180 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:05:17 ]
template利用する場合でも数値を扱うなら実数と整数では別けて特殊化するがね

181 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:48:26 ]
漢字やひらがなでソートしたいのですが可能なのでしょうか
もしできるのなら詳しくソースコードを教えてください

182 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:49:25 ]
文字コードそのままでソートしてるんじゃねえの

183 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:50:07 ]
辞書データと比較してだな

184 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:04:33 ]
並べたい順に並べるだけだな。


185 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:11:03 ]
kwsk

186 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:14:02 ]
住所録ソフトとか見たことないの?
漢字使ってる場合とかは読みを別に入力して、その読みの順でソートするんだよ?
読みはローマ字表記のものもあればかな表記のものあるけど
どちらにせよその後は普通のソートだよ


187 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:53:48 ]
漢字に順番なんてものは無いんだから、
比較して自分が並べたい順に並べるしかないだろ。
「太郎」と「次郎」はどっちが先だ?




188 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:57:48 ]
あいうえお順なら、次郎が先、逆順なら太郎
文字コード順なら太郎が咲き


189 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:02:37 ]
DQNネームが流行ってる今、あいうえお順なんてふりがながふってないとムリ






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

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

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