トップページ⇒tech
1001コメント330KB

スレを勃てるまでもないC/C++の質問はここで 4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/09/17(水) 15:41:48
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0390デフォルトの名無しさん2008/11/28(金) 14:55:25
>>389
できる環境もあればできない環境もあります。
0391デフォルトの名無しさん2008/11/28(金) 15:00:38
>>390
できる環境の場合のやり方を教えてください。
0392デフォルトの名無しさん2008/11/28(金) 15:11:13
>>391
できる環境の場合、そうなるようにやります。
その方法は、大抵の場合複数あります。
0393デフォルトの名無しさん2008/11/28(金) 16:17:46
>>392
getcharの実行中はプログラムは止まったままだと思いますが
どうやってやるのでしょう?
0394デフォルトの名無しさん2008/11/28(金) 16:25:29
getchar使わなきゃいいだろ。
ゲームとかキー入力うけつけながら残り時間表示とかしてるだろ?
0395デフォルトの名無しさん2008/11/28(金) 16:25:51
>>393
スレッド作成して別スレッドで時計表示
0396デフォルトの名無しさん2008/11/28(金) 17:02:26
>>391
Windowsなら
メッセージ処理する
Directinput使う
conio.h使う
など
0397デフォルトの名無しさん2008/11/28(金) 18:09:55
>>395
ありがとうございます。大体分かりました。ところで、下のプログラムを実行すると
main関数のgetchar以降が実行されないみたいなんですがどうしてなんでしょう?
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void thread(void);
int main(void) {
int handle;
pthread_t id;
int c;
handle = pthread_create(&id, NULL, (void *(*)(void*)) thread, NULL);
while(1) {
printf("Main\n");
c = getchar();
printf("Main %d\n", c);
usleep(500*1000);
}
}
void thread(void)
{
usleep(500*1000);
while(1) {
printf("Thread %d\n", (unsigned) time(NULL));
usleep(1000*1000);
}
}
0398デフォルトの名無しさん2008/11/28(金) 18:28:12
>>397
なんで自分の環境を書かないの?
>397でUnix系と言うことは判ったけど。
で、getchar()で止まっているスレッドよりもusleep()で止まっているスレッドが優先されているだけじゃないのかね。
少なくとも私の環境(cygwin)では巧くいくようだよ。
0399デフォルトの名無しさん2008/11/28(金) 18:30:48
>>398
ありがとうございました。解決しました。
0400デフォルトの名無しさん2008/11/28(金) 21:06:47
なんていうか、かなり変な質問かと思うんですが……。
if文を利用する価値ってどんなもんですか?

リアルタイムで変化しうる1万個のフラグがあって、1/60秒ごとに全てのフラグをチェックする必要があるが、if文ひとつでチェックすべきフラグが9千個ほどにまで削減できるとしたら。
if文を入れても入れなくても処理速度は変化しないとすれば、このif文に価値ってありますか?
0401デフォルトの名無しさん2008/11/28(金) 21:13:06
処理的に入れなければならないifなのであれば、処理速度を問わず、それは存在しなければならない。
最初コストの話かと思ったんだが、そういう風にも見えないのでもう少し説明が欲しい
0402デフォルトの名無しさん2008/11/28(金) 21:14:24
if文一つ入れることで1割のフラグチェック処理を枝刈りできるのなら割と有意義に思えるけどな
0403デフォルトの名無しさん2008/11/28(金) 22:27:15
>>400
そのフラグはif文を使わずに何を使ってチェックするのかね。
0404デフォルトの名無しさん2008/11/28(金) 22:47:21
>>401
究極的に言えば、「わずかな処理を省くためにif文を入れるべきか」って話です。
八千個のフラグチェックを削減できるなら「効率化」、五千個の削減も「効率化」、四千、三千も「効率化」と呼べるでしょう。
それなら、千個の削減は「効率化」か、五百個、百個、五十個は……。と考えていくと、どこまでが「効率化」と呼べるのか、と疑問に思ったので。
『状況や環境による』と言われてしまえばそれまでなのですが……。
「ソースを増やしてでも最大限処理を減らすべき」か「体感できない程度の無駄なら無視すべき」か、どちらを優先すべきなのか悩まされてしまいます。
0405デフォルトの名無しさん2008/11/28(金) 22:50:38
まともに動いてから考えればいいんじゃないの?
0406デフォルトの名無しさん2008/11/28(金) 23:16:38
どちらでもなく、「速度が問題になったときに考えるべき」だよ。
んで、速度が問題になったときに何をすべきかというと、そのif文を入れることではなく、
そのif文を入れることで問題が解消されるのかどうかを考えるべき。
0407デフォルトの名無しさん2008/11/29(土) 17:02:36
何で矢印キーのエスケープシーケンスって上下右左の順に大きくなるの?上下左右でなくて。
0408デフォルトの名無しさん2008/11/29(土) 18:26:42
>>407
何でそれが疑問なの? 右と左のどちらを優先すべきかと聞かれたら、普通は右だと思うでしょ。
右は桁を+する方向だし、プラスとマイナスを逆順にしたいやつはいないと思うんだけど。
0409デフォルトの名無しさん2008/11/29(土) 18:50:33
>>408
それだと上下が下上になってないとおかしいと思うんだけど
04104092008/11/29(土) 18:54:09
さらに言うとx軸方向が先の方が良くない?数学でよく使うxy平面で言うと右左上下じゃん
0411デフォルトの名無しさん2008/11/29(土) 20:21:35
日本人は普通上下左右と言うが、これは国や地域で異なる
順番なんてテキトーにつけるしかない
0412デフォルトの名無しさん2008/11/29(土) 21:11:09
>>409
いやさ、だから何で疑問に思うのか説明してよ。上下に関しては、左上原点なんてのは視野が狭いとしか。
上下と左右の順序については、どちらを重視するかの問題。

>>411
一応人間工学では、上下のボタンを左右に並べざるを得ない場合には右側に上ボタンを配置することになっている。
これはどうやら、右から左に書く文化圏でもその方がいいらしいよ。
0413デフォルトの名無しさん2008/11/30(日) 01:01:41
たしかにjが下でkが上だな
0414デフォルトの名無しさん2008/11/30(日) 07:33:56
C言語とは直接関係ない質問なんですが
クイックソートをwikipediaで調べると

1. ピボットとして一つ選びそれをPとする。
2. 左から順に値を調べ、P以上のものを見つけたらその位置をiとする。
3. 右から順に値を調べ、P以下のものを見つけたらその位置をjとする。
4. iがjより左にあるのならばその二つの位置を入れ替え、2に戻る。
   ただし、次の2での探索はiの一つ右、次の3での探索はjの一つ左から行う。
5. 2に戻らなかった場合、iの左側を境界に分割を行って2つの領域に分け、そのそれぞれに対して再帰的に1からの手順を行う。
   要素数が1以下の領域ができた場合、その領域は確定とする。

注:このアルゴリズムでは、領域の左端の値が領域内で最小かつ同じ値が他の位置に無い場合
  ピボットとしてその値を選ぶと同じ領域を再帰的に呼び出す無限ループとなってしまう。

とあるのですが、この注の意味がどういうことかわからないのですが
ピボットが左端で値が最小だとどうして無限ループになってしまうんでしょうか?
0415デフォルトの名無しさん2008/11/30(日) 09:39:36
>414
コンピュータのつもりになって気を利かさず愚直に書いてあることにそのまま従ってみればいいんだよ。
1. P は左端の最小値
2. i は左端
3. j は左端
4. i == j なので左じゃないから skip
5. i の左側を境界に分割しても左端なんだから今と変わらない 1 領域のまま。1に戻って同じことの繰り返し。
0416デフォルトの名無しさん2008/11/30(日) 12:36:18
C言語の関数名って変数なんですか?
なんか関数名を型変換するようなプログラムがちゃんと動いたんで。
0417デフォルトの名無しさん2008/11/30(日) 13:06:23
変数ではないが、先頭アドレスを利用できる。
0418デフォルトの名無しさん2008/11/30(日) 13:08:18
>>416
関数名は変数じゃありませんが、関数名を参照すると関数へのポインタと言う値になります。
0419デフォルトの名無しさん2008/11/30(日) 19:12:33
int main(int argc,char *argv[]){

int day;
day=atoi(argv[1]);
if(0<argv[1]<32){
int foo,baa;
かくかくしかじか
}
else{
printf("日にちは1から31で入力してください¥n");
}
return 0;
}
と書いておけば
もしコマンドライン引数が41の場合これはかくかくしかじかは実行されませんよね?
どこのバグだかわからなく困っているので助けてください。
0420デフォルトの名無しさん2008/11/30(日) 19:14:52
>>419
0<argv[1]<32
こんな条件文は無いかと
0 < argv[1] && argv[1] < 32
じゃね?
0421デフォルトの名無しさん2008/11/30(日) 19:18:35
>>420
ありゃ?有りませんでしたっけ
すこしLispかぶれして帰ってきて
たしかCだと一つの括弧でかけるから便利なんだよなと思い
<で挟んでみたのですが、記憶がちがったのかもしれません。
確認してみた所無事に動きました。
非常に助かりました。
0422デフォルトの名無しさん2008/11/30(日) 19:29:51
すみません。自分自身の限界が来たので質問させてください。
Javaで非常にシンプルなボタンの作成をしてみました。
なぜだか、5番目のボタンだけキャプションが表示されません。
環境はWin+eclipseです。

トラブルシュート、ログはたくさん見たのでその他のなにか考えなければならないヒントなどいただけると
た す か り ま す

public class Test {
public void method(){
int i;
Button h[]=new Button [9];
int dx[]={1,2,3,4,5,6,7,8,9};
int dy[]={1,1,1,1,1,1,1,1,1};
String st[]={"aa","ii","uu","ee","oo","か","き","く","け"};

Display display = new Display();
Shell shell=new Shell(display);
shell.open();

for(i=0; i<9; i++){
h[i]=new Button(shell,SWT.BORDER);
h[i].setBounds(dx[i]*50,dy[i]*30,50,30);
if(i!=4){h[i].setText(st[i]);}}
while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}}
display.dispose();}
public static void main(String[] args){
Test test = new Test();
test.method();}}

0423デフォルトの名無しさん2008/11/30(日) 19:32:12
0 < day && day < 32
じゃなくて?
意図からすると
1 <= day && day <= 31
か?
0424デフォルトの名無しさん2008/11/30(日) 19:34:54
>>422
んあ、c++のスレだった。
スレ汚しスマソ。

Javaに言ってきまふ。
422は無視してくだせい。
0425デフォルトの名無しさん2008/11/30(日) 20:00:51
> day=atoi(argv[1]);
> if(0<argv[1]<32){
・折角数値に変換したのに、元の文字列と比較してどーする
・C/C++では a<b<c という条件式は
 文法上は書けるが、見た目とは相反する動きになるから
 a<b && b<c と書くべき
 (普通の処理系なら a<b は成り立てば1、成り立たなければ0
  a<b<cは、(1か0)<c という式として翻訳されてしまう)
0426デフォルトの名無しさん2008/11/30(日) 20:07:39
すみません。
ユーザーがランダムな順番で入力した四角形の4つの頂点座標のCPoint型(x,y座標を保持)の変数の中から
四角形の左上の頂点がどれかを判定したいのですが
うまい方法が思いつきません。

1番左 かつ 1番の上の座標を求めれば良いだけジャン…と思っていたんですが

//CPoint cp0, cp1, cp2, cp3には既にx,y座標が代入済みとする

//四角形の左上座標がどれか4つの中からを決める
CPoint tmp;
tmp = cp0;
if ( tmp.x >= cp1.x ) if ( tmp.y >= cp1.y ) tmp = cp1;
if ( tmp.x >= cp2.x ) if ( tmp.y >= cp2.y ) tmp = cp2;
if ( tmp.x >= cp3.x ) if ( tmp.y >= cp3.y ) tmp = cp3;
return tmp;//左上座標を返す

長方形だとこれで問題なさそうなんですが、例えば極端に歪んだ平行四辺形とかだと
左から2〜3番目の頂点が左上頂点だったり(例:上底、下底が水平で下底が思い切り左に寄っている)
上から2〜3番目の頂点が左上頂点だったり(例:右辺、左辺が垂直で右辺が思い切り上に寄っている)
等のケースに対応できません。
0427デフォルトの名無しさん2008/11/30(日) 20:33:50
>>426
左上って定義が曖昧すぎないか?
全てのパターンを分ける以外方法無いと思う
0428デフォルトの名無しさん2008/11/30(日) 20:43:23
つまり、こういうケースか?
  _
/  \
 ̄ ̄ ̄
「左上」自体の定義によっては一番左の点が左上かも知らん。
04294262008/11/30(日) 21:40:33
>>427
うーん。人間にとっては迷うことなく一意に決められそうですけど
いざ言語化して厳密に定義するとなると難しいですね…

>>428の図をみて思ったのですが
◇(菱形)みたいな形だとどれが左上か厳密に決められないので

「上底下底が水平 or 右辺左辺が垂直な四角形(台形)に限定する」
とすると決まりそうですね。

「その頂点のx座標より右側にx座標があればひとつにつき1点ずつ、
 その頂点のy座標より下側にy座標があればひとつにつき1点ずつ
 の評価点を加点し、最も高い評価点の頂点を左上の頂点とする 」

>>428の台形だと
上底の左側の頂点:右2点、下2点、計4点
上底の右側の頂点:右1点、下2点、計3点
下底の左側の頂点:右3点、下0点、計3点
下底の右側の頂点:右0点、下0点、計0点
で「上底の左側の頂点」が左上

あ、なんとか行けそうです。有難うございます。
たぶん漏れるケースはないかと…
0430デフォルトの名無しさん2008/11/30(日) 23:43:17
そうまでして左上を定義する意義が判らん。
04314262008/12/01(月) 00:21:31
左上にこだわるというか
4つの座標の入力順が狂っていても治す必要があったので
実際には右上と右下と左下も決めます。
0432デフォルトの名無しさん2008/12/01(月) 00:23:33
一番上で一番左じゃダメなんだろうか。
0433デフォルトの名無しさん2008/12/01(月) 00:27:20
erase() がイテレータを返すコンテナでは

list<foo, bar>::iterator it = xmap.begin();
while (it != xmap.end()) {
if (it->finished()) {
it = xmap.erase(it);
} else {
++it;
}
}

とかやりますが、イテレータを返さない、たとえば map
とかで

for (map<foo, bar>::iterator it = xmap.begin(); it != xmap.end(); ++it) {
if (it->second.finished()) {
xmap.erase(it);
}
}

みたいなのは大丈夫なんでしょうか?
0434デフォルトの名無しさん2008/12/01(月) 01:54:02
>>432
今回の場合は、一番上だが一番左じゃないケース、一番左だが一番上じゃないケースに対応する必要があったんじゃないかね。
0435デフォルトの名無しさん2008/12/01(月) 01:55:17
>>431
それならもう入力段階で弾くか正す方が早いかと
0436デフォルトの名無しさん2008/12/01(月) 02:11:50
>>434
いやだから、一番上を優先して、一番上なら一番左じゃなくてもいいことにすればいいんじゃないかってこと。
少なくとも私なら、そうする。それなら、上下が等しい場合のみ左右をチェックすればいいから効率もいい。
0437デフォルトの名無しさん2008/12/01(月) 02:19:24
  ___
/   /
\  /
 \/
上底の左側の頂点:右2点、下2点、計4点
上底の右側の頂点:右0点、下2点、計2点
左の頂点:右3点、下1点、計4点
下の頂点:右1点、下0点、計1点
0438デフォルトの名無しさん2008/12/01(月) 02:25:39
左上とか右上とか位置を決めて何がしたいの?
四辺がねじれないように描画したいとか?
0439デフォルトの名無しさん2008/12/01(月) 02:26:45
>>436
ああ、一番上でも一番左でもないケースがあるわ。
でも見た目的には左上に見える。

 /|
/  |
 ̄ ̄
こんなのとか。
こんな図形絶対データに入らねーよ!とかなら構わんけど、
俺はあんたの作りだとすげー気持ち悪い感じがする。
対応漏れが意図的で、かつ仕様として問題ないんなら良いんだけどね。
04404362008/12/01(月) 02:46:32
>>439
それ、上から順でなんか問題があるのか?
元質は、左上だけを決定したいのではなく順序を決定したいらしいぞ。
0441デフォルトの名無しさん2008/12/01(月) 04:40:09
順序なんてどこに書いてあるんだ…?
今回の質問は、四角形の各頂点座標から
(菱形みたいな明らかに決定不能な場合を除いて)
左上、右上、左下、右下をそれぞれ決定したいってことだろ。
例えば一番上が右上の場合、それが左上として認識されてはいけないのでは?
04424262008/12/01(月) 06:10:59
>>435
え〜と。入力段階で弾くために判定をしています。

>>437
>>439
>>429で取り敢えず決めた「上底下底が水平 or 右辺左辺が垂直な四角形(台形)に限定する」
に反するのでその形状はご勘弁を…

>>436
それだと極端に歪んだ平行四辺形(例:右辺、左辺が垂直で右辺が思い切り上に寄っている)

/|
| |
|/

に対応できないもので…
ただ、「そもそも左上を厳密に決めない」という手も確かにありますね…

本当の最終的な目的は
「ユーザーが適当な順番で入力した座標4点の四角形の範囲を
 1ピクセルずつ拾って画像処理をするための座標を計算したい」

ですので必ずしも左上を厳密に決めなくてもなんとか計算できるかもしれません。
(パッと今は思いつきませんが)
0443デフォルトの名無しさん2008/12/01(月) 09:08:20
凸図形なら座標平均の左上で行けそうな気がするけど
ブーメランみたいな凹図形だと厳しいな。
0444デフォルトの名無しさん2008/12/01(月) 09:50:42
画像処理で使うなら左上って言うのは
上を優先して次に左を優先じゃね?画像処理したことないからよく分からんけど。
0445デフォルトの名無しさん2008/12/01(月) 11:06:43
外接する長方形の左上の点から最も近い角じゃないかという気がする。
0446デフォルトの名無しさん2008/12/01(月) 12:15:27
等距離の場合も有るよ
0447デフォルトの名無しさん2008/12/01(月) 13:14:13
>>446
touzen
0448デフォルトの名無しさん2008/12/01(月) 18:06:58
タッズン…???
0449デフォルトの名無しさん2008/12/02(火) 01:06:09
x+yが最小の点が左上じゃないのか
439にも対応できるぞ
0450デフォルトの名無しさん2008/12/02(火) 01:11:01
既出の事を別の言葉で言い換えたんですね、わかります。
0451デフォルトの名無しさん2008/12/02(火) 01:13:26
>>449
>>439をひたすら縦に引き伸ばしてから同じことを考えるんだ
明らかに右上の座標のx+yのほうが小さくなる
04524262008/12/02(火) 07:03:11
>>449
あっ
それ1番最初に考えました。
0453デフォルトの名無しさん2008/12/02(火) 14:47:45
>>426は仕様を明確にしろ。

(0,0)と(0,1)のどちらが左上だ?
凹四角形の扱いはどうするのだ?
0454デフォルトの名無しさん2008/12/02(火) 15:15:12
>>453
>>429
0455デフォルトの名無しさん2008/12/02(火) 17:33:01
int a[100];
int b[100];

bの[0~99]までの全内容を a[0~99]にfor文とかmemcpyやmemmoveとか使わないで
代入する方法なんてありますか・・・?
0456デフォルトの名無しさん2008/12/02(火) 17:39:07
>>455
a[0]=b[0];
a[1]=b[1];
a[2]=b[2];
  ・
  ・
  ・
a[99]=b[99];
0457デフォルトの名無しさん2008/12/02(火) 17:49:01
>>456
やはりないかぁ・・・
0458デフォルトの名無しさん2008/12/02(火) 18:04:11
移植性なんて知らない。
struct array_of_int_100 {
int array[100];
};

int a[100];
int b[100];

*(struct array_of_int_100*)a = *(struct array_of_int_100*)b;
0459デフォルトの名無しさん2008/12/02(火) 18:09:59
std::copy(b, b + 100, a);
0460デフォルトの名無しさん2008/12/02(火) 18:21:47
gcc拡張で
a = b;
0461デフォルトの名無しさん2008/12/02(火) 18:44:57
a|oven::copied_to(b);
0462デフォルトの名無しさん2008/12/02(火) 19:20:46
文字列データから文字列をサーチじゃなく、
バイナリデータからバイナリ列をサーチする関数、STLないですか?
0463デフォルトの名無しさん2008/12/02(火) 19:23:28
boost::xpressive
0464デフォルトの名無しさん2008/12/02(火) 19:32:15
C++初心者です。

list<int> list[M][N];

みたいな2次元配列って出来るんですか?
0465デフォルトの名無しさん2008/12/02(火) 20:22:08
マルチすんな初心者だからってのは免罪符にゃなんねーぞ死ね馬鹿


できるよ
0466デフォルトの名無しさん2008/12/02(火) 20:55:07
C/C++に詳しい方々よ。
質問があるのでどうか答えてほしい。
C++とVB.NETで両方ともオブジェクト指向でわけわからんになってしまった経験があるのだが。オブジェクト指向って本当に必要なんですか?
コンピューターの世界で無理やり知らなければならないような方向に誘導されてるような気がするのですが。
オブジェクト指向は効率的なプログラムを組むために必要だとか利便性を説いてるが、かえって複雑になって習得が難しくなってる気がする。
Windows上でツールを作ることを目的としてプログラミング言語を2,3勉強したが。身についたのはC言語だけ。
もうこうなったらオブジェクト指向はさっぱりあきらめてC言語だけで行こうかと思ってるのですけど。
C言語でアプリやツール、ゲームをつくる需要は今後も残るのでしょうか?
0467デフォルトの名無しさん2008/12/02(火) 21:06:00
>>466
俺は詳しいとはいわんが、C の需要は残ると思う。ただ、アプリ、ゲームを
チームで全てCで作ることはあまり無くなるだろう。一人で作るなら勝手に。
ドライバとか低レベル(悪い意味で無くて)のものはCで残るものがあるはず。

ただ、オブジェクト指向使えた方が楽だと思うんだけどなぁ…
(C→C++,Java と来た人だけど)

他の人の意見も見てみたい
0468デフォルトの名無しさん2008/12/02(火) 21:12:54
リア厨房の頃HSPから入って「関数?クラス?いらねーよ」とか言ってた私ですが
今ではすっかりC++に馴染んでオブジェクト指向じゃないと面倒だと感じるようになりました^q^

>>467の言う通り完全に需要がなくなることは当分無いと思う(実際COBOLとか未だに需要あるし)けど、
やっぱり自分一人という範囲に限らないならオブジェクト指向の知識は必要だと思う。
ライブラリの類もオブジェクト指向前提のものは多いしね。
0469デフォルトの名無しさん2008/12/02(火) 21:20:11
極端なこと言えば、オブジェクト指向なんて当たり前のことに名前を付けただけ。
みんながむやみやたらと唱えるバズワードと化してしまったのがだいぶ前から。

あと、Cで書かれたプログラムだってオブジェクト指向的な部分はいくらでも指摘できる。
もちろん、Cはオブジェクト指向プログラミング言語ではないし、
そこで書かれたプログラムにも、オブジェクト指向プログラミングでよく見かける特徴は
あまり見出せないけど。
0470デフォルトの名無しさん2008/12/02(火) 21:23:52
>>466
気持ちはすごいわかる。

自分もそんなに分かってるわけじゃないけど、世間のオブジェクト指向って
それっぽい文法を採用してるよ、ってぐらいなので、そんな気にすることはないと思う。

言語体系が複雑になっているのは、汎用性とのトレードオフじゃないかね。
C言語のコアはシンプルだけど、何かするなら結局OSのAPIとか使わないとならない。
Javaみたいにそれ全部仕様に含んじゃうと、当然仕様は膨らんじゃう。

仕事でチーム作業の場合 C++で統一するってのは仕方ないだろうね
でも自分は C で作ってる。必要最小限のコードで済ませられるし、
プログラムとかプロセスのレベルでシステムを設計すれば、実際のところ
言語はなんでもいいしね。
0471デフォルトの名無しさん2008/12/02(火) 21:23:55
>>466
そのうち慣れるって。
慣れたらもう戻れないけどね。いや、戻れるけど
クラス無いのきびしーって思うようになるよ。
関数やローカル変数なかったらきびしーなんてもんじゃないけど。
そういえばCOBOLには無いんだっけw
0472デフォルトの名無しさん2008/12/02(火) 21:26:04
>>467
ご回答ありがとう。
C++とVB.NETと一通り勉強したけど、自分でオブジェクト指向でプログラムつくれなくて挫折したわ。
これを理解できるのはかなり頭のいい人だろうね。
趣味でプログラミングをやってるので、チームワークの必要なことはしないし知ってるのは唯一自分でコードが書けたC言語だけでいいかなとも思った。

ところで質問をもうひとつしますが。
ウェブブラウザのFirefoxってフリーでソースが公開されてるけど、
ビルドするのにGCCを用いる様だけど、これってC言語でできてるのでしょうか?
0473デフォルトの名無しさん2008/12/02(火) 21:30:56
デザインパターンの本を読むと
オブジェクト指向で何がしたいのか分かると思う
0474デフォルトの名無しさん2008/12/02(火) 21:33:21
>>466
確かに色々と覚えることがあって回りくどくて面倒なんで
うんざりするほどその気持ちはわかる。
自分もそう思っていたんで。

でも、とりあえずクラス化したら楽だと思うんだ。
慣れないうちは全部publicなメンバでも良いと思う。
関数名とか変数名とかdrawとかxみたいに短くても楽に管理できるし。
それだけでも重宝するかと。
0475デフォルトの名無しさん2008/12/02(火) 21:59:58
>>474
なんだか知らないけれど新たにがんばってみようと言う気になったわ。
ありがとうよ。
0476デフォルトの名無しさん2008/12/02(火) 23:33:31
C++ は気張って OOP とか言わずに、Cに STL があると思った
だけで大分便利。ついでに自分で template 書けるようになると
もっと便利。そんなことしてるうちに自然と OOP。
0477デフォルトの名無しさん2008/12/03(水) 02:46:39
OOPってそんな気張ったモノでもないよ
ファイル処理関連はどの言語もOOPみたいなもんだ
単に語順と追加機能の有無だけ
0478デフォルトの名無しさん2008/12/04(木) 17:38:38
入門書みつつ文法を1から学び、日々黒い画面の中で動かしているのですが
左上に「ファイル」、右上に最小化最大化閉じる、といったものがある普通のアプリの段階にはいつ入るものなのでしょうか?
あるいはこういった骨格みたいなの?は入門書的にはなんという項目から始まるものなのでしょうか
0479デフォルトの名無しさん2008/12/04(木) 17:54:24
>478
入門書は普通、CやC++の基礎部分を解説するもの
ウィンドウシステムは応用部分にあたるので
入門書ではあまり語られない

一通り入門書を触ったら、Visual C++ Express 辺りを落として
インスコした Visual C++ をテキトーに弄ったり
Windowsプログラミングの書籍を読んで勉強するヨロシ
0480デフォルトの名無しさん2008/12/04(木) 18:17:54
>>478
http://homepage2.nifty.com/c_lang/index_sdk.html
0481デフォルトの名無しさん2008/12/04(木) 18:19:18
C言語はUNIXでもWindowsでもMacでもLinuxでも使うけど
ある程度共通項が多い上扱いやすい stdio に対して
ウィンドウシステムの扱いは各環境でバラバラ。
そしてその多くはそれだけで本が1〜数冊書ける複雑さ。
直接扱うのは複雑だからと、簡単に扱うためのライブラリもある。
(WindowsならMFCや.net、LinuxならTkやGTKやQtなど)
それから、色んな環境で扱えるように作られたライブラリもある。
(wxWidgetとか。.netやTkも一応互換環境がありこっちにも分類可能)
環境も手段も多様で、総てを統括するのは困難。
0482デフォルトの名無しさん2008/12/04(木) 18:32:53
>>479-
ありがとう、また文字を表示する作業から勉強しなおしてきます
0483デフォルトの名無しさん2008/12/05(金) 09:10:33
void * (*)(void *) 型の意味を教えてください
0484デフォルトの名無しさん2008/12/05(金) 09:34:16
なんかよく解らんポインタを引数にとって、なんかよく解らんポインタを戻す関数へのポインタ
0485デフォルトの名無しさん2008/12/05(金) 09:38:40
それなりに的確な説明なのに何故か笑ってしまったw
0486デフォルトの名無しさん2008/12/05(金) 11:47:41
日本語のcdeclプログラムを作ってみないか?
0487デフォルトの名無しさん2008/12/06(土) 10:25:01
どこまでを設計と呼ぶのやら
0488デフォルトの名無しさん2008/12/06(土) 10:27:23
すっまん。誤爆だ。忘れてくれ。
0489デフォルトの名無しさん2008/12/07(日) 10:30:31
アクセス制御ってぶっちゃけあんまいらなくね?
■ このスレッドは過去ログ倉庫に格納されています