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

C言語なら俺に聞け(入門篇) Part 4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/09(木) 00:31:01
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 3
http://pc8.2ch.net/test/read.cgi/tech/1160682950/

過去スレ
Part 1 http://pc8.2ch.net/test/read.cgi/tech/1146700389/
Part 2 http://pc8.2ch.net/test/read.cgi/tech/1153818463/


関連スレ
くだすれC言語(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1153542424/

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/
0357デフォルトの名無しさん2006/11/16(木) 20:04:59
>>356
よお、じゃいあん
0358デフォルトの名無しさん2006/11/16(木) 20:51:49
>>357
悪いけど、今日は歌いたい気分じゃない・・・
0359デフォルトの名無しさん2006/11/16(木) 21:17:08
fgets + sscanf でなく、scanf を使ってしまっても
構わないようなケースにはどのようなのがあるでしょうか。
0360デフォルトの名無しさん2006/11/16(木) 21:22:40
ちょっと実験するためだけのような使い捨てのコードなら。
0361わからないので教えてください2006/11/16(木) 21:46:32
すみません、この問題のプログラムはどう作ればよいのかがわからないので
ぜひ、よろしくお願いします・・・

問題
配列su(要素数:12)に任意の数値をランダムに初期値設定し、逐次決定法によって
整列(昇順)させ、結果を表示させるプログラムを作成してください。
0362デフォルトの名無しさん2006/11/16(木) 21:54:26
何とか法とか何とか論を皆が知ってると思うなよ
0363デフォルトの名無しさん2006/11/16(木) 22:03:07
どうみても宿題ですありが(r
0364デフォルトの名無しさん2006/11/16(木) 22:05:56
逐次決定法って何だよ。バブルソートか?単純選択法か?
0365デフォルトの名無しさん2006/11/16(木) 23:08:41
任意の数値をランダムに初期値設定って何?ランダム値を初期値にするってこと?
逐次決定法が何か知らんが昇順ソートでおk?
0366デフォルトの名無しさん2006/11/16(木) 23:19:29
C++やP2P技術に卓越したプログラマの方々
宜しければ一度で良いので拝見して頂きたいです
当企画の成立には貴方の力が必要です

次世代コミュニティ製作 C++,mod_perl,P2Pが使えるコーダ、グラフィッカ募集中
http://pc8.2ch.net/test/read.cgi/tech/1163349367/
0367デフォルトの名無しさん2006/11/16(木) 23:20:33
>>366
おいいい加減にしろよ。あちこちのスレにコピペしやがって。
削除依頼出すぞ
0368STUDENT2006/11/16(木) 23:29:36
「問題17」πの値を実数として計算し表示せよ。
「問題19」πの値を小数点以下60桁まで求めよ。
のCプログラム(C++)を作ってください。
多倍長少数を利用してプログラムを作ってください。

0369デフォルトの名無しさん2006/11/16(木) 23:44:45
>>368
おいいい加減にしろよ。あちこちのスレにコピペしやがって。
削除依頼出すぞ
0370デフォルトの名無しさん2006/11/17(金) 00:06:05
>>368
作るのはかまわんが、お前にはやらん。
0371デフォルトの名無しさん2006/11/17(金) 00:12:11
Delete(368);
0372デフォルトの名無しさん2006/11/17(金) 16:26:48
>>368
printf("3.141592653589793238462643383279502884197169399375105820974944");
0373デフォルトの名無しさん2006/11/17(金) 18:18:03
int Test(int iParamCount,...)
{
char* pParam[20];
int i;
va_list args;

//可変個引数を取得
va_start(args, iParamCount);
for(i=0; i<20; i++){
pParam[i] = va_arg( args, char* );
}

return 0;
}

上記のように可変個引数を取得しようとしているのですが、
引数の型が複数あり、うまく引数が取得できません。
なにかいい方法ありませんか?
0374デフォルトの名無しさん2006/11/17(金) 18:19:49
sageちゃった。
0375デフォルトの名無しさん2006/11/17(金) 18:30:07
printf/scanf系みたいに呼び出し側から型を伝えるようにするしかない。
蛇足だが、vprintf/vscanfのようにva_listを引数にとるものも作れ。
0376デフォルトの名無しさん2006/11/17(金) 19:30:12
#include<stdio.h>

int main(void)
{
int array[5];
int count;


for(count=0;count<5;count=count+1){
printf("Input No.%d",count);
scanf("%d",array[count]);
}

for(count=4;count>=0;count=count-1)
printf("No.%d:%d\n",count,array[count]);

return(0);
こいつで実行してもエラーで強制終了するんですけど何故ですか?}
0377デフォルトの名無しさん2006/11/17(金) 19:33:07
>>376
scanf("%d",array[count]);
引数はアドレスです
scanf("%d",&array[count]);
0378デフォルトの名無しさん2006/11/17(金) 19:33:17
>>376
}がなくね?
0379デフォルトの名無しさん2006/11/17(金) 19:36:46
>>378
>こいつで実行してもエラーで強制終了するんですけど何故ですか?}

この文の最後にあるw
0380デフォルトの名無しさん2006/11/17(金) 19:37:39
>>379
見えてなかったorz
0381デフォルトの名無しさん2006/11/17(金) 19:47:13
>>377
それでできましたどうもです
0382デフォルトの名無しさん2006/11/17(金) 20:21:41
>>379
ちょっとワロタ
0383デフォルトの名無しさん2006/11/17(金) 22:30:56
LPCSTR str = "Friday, 01-Jan-2007 00:00:00 GMT";のような
クッキー形式の日付をtime_t値に変換する関数とかあれば教えて下さい。
03843832006/11/17(金) 22:39:41
無さそうなんでやっぱりいいです。
0385デフォルトの名無しさん2006/11/17(金) 23:31:22
>>383
自分で変換する関数作れ
0386デフォルトの名無しさん2006/11/18(土) 00:21:01
>>383
つ[popen("date -d 'Friday, 01-Jan-2007 00:00:00 GMT'", "r")]
0387デフォルトの名無しさん2006/11/18(土) 00:23:10
あ、いかん、出力形式指定するの忘れてた。
date -d 'Friday, 01-Jan-2007 00:00:00 GMT' +%s
0388デフォルトの名無しさん2006/11/18(土) 01:23:06
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int s, x[8]={0};
s=sizeof(x)/sizeof(x[0]);
printf("size of x: %u¥n"(unsigned) s);
return 0;
}
void fun(int *x)
{
int s;
s=sizeof(x)/sizeof(x[0]);
printf("size of x: %u¥n"(unsigned) s);
}

fun関数の中で配列xの要素数をカウントするプログラムを考えているんですが、
関数に配列を渡す時点でポインタに置き換えられるので、main関数での
printf文とfun関数でのprintfの出力が違ってしまいます。

2つが違ってしまう原理自体は理解出来ているつもりなのですが、何かいい方法は
ないでしょうか?スマートな方法を思いつかなくて困っています。
0389デフォルトの名無しさん2006/11/18(土) 01:27:39
>>388
C++なら
template <int N>
void fun(int (&x)[N})

と宣言すれば

s=sizeof(x)/sizeof(x[0]);

が使えるが、Cでは配列は必ずポインタに変換されてしまうため
配列の大きさに関する情報は失われてしまう。

通常
void fun(int *x, int n)
と、別のパラメータで大きさを渡す。
03903882006/11/18(土) 01:33:36
>>389
深夜にありがとうございます。

やっぱりパラメータで渡すしかありませんか。引数が増えていくとどんどん
コードが不細工になってくるんで、もう泣きそうで……

ってかC++だったらそんなこと出来るんだ。この際、C++のお勉強しようかな。
0391デフォルトの名無しさん2006/11/18(土) 01:36:21
>>390
設計を変えて構造体を使えば?
もしくは番兵を使う手もある。(最後の要素を示す記号として-1を使うとか)
03923882006/11/18(土) 01:40:46
構造体はよく理解出来てないんで、ちょっとやってみます。
複素数演算を作ったことがあるんで、上手くやればいけるかも知れませんね。

簡単化のためにintで書いたんですが、実際はdouble型でインパルス応答なんかの
数値を入れようと思っています。なので、番兵に数値が入るとまずくって…

構造体でポインタと要素数を抱き合わせておくっていうのが、よさそうですね。
0393デフォルトの名無しさん2006/11/18(土) 02:01:19
大抵の処理系なら、NaNを番兵に使えるかもしれない。
或いは、正規化できる前提で-0を使うとか。
0394デフォルトの名無しさん2006/11/18(土) 03:11:01
ダイテル本の練習問題の条件演算子を使った問題で

printf("%s\n", count % 2 ? "****" : "++++++++");
てやつがあったんですがこれは
count % 2 で1の時に真を返すってことでいいんですか?
0395デフォルトの名無しさん2006/11/18(土) 03:38:23
お前は何をいっているんだ。
0396デフォルトの名無しさん2006/11/18(土) 03:55:35
たぶん、「0じゃない値を真と評価する」を
俺用語に訳すと「count%2で云々」になるんだと思う。

あと、ゆとり世代で日本語が苦手なので
本の名前なんか正確に書かなくても、読み手は推測してくれるし
文章に読点なんか無くても、読み手が理解するよう努力してくれるものだと思ってる
はず。
0397デフォルトの名無しさん2006/11/18(土) 04:04:30
>>396
わかりました、ありがとう!
もう消えていいよ!
0398デフォルトの名無しさん2006/11/18(土) 05:59:24
>>397
人の忠告は素直に聞くようにしたほうがいいよ。
自分にとって不愉快な書き方だからってそんな反応をしているようじゃ、
次に書き込むときも似たようなことをして、似たような反応をされるはず。
0399デフォルトの名無しさん2006/11/18(土) 07:55:53
この場合どっちもどっちだと思うけど
0400デフォルトの名無しさん2006/11/18(土) 10:40:12
少し注意されただけで煽り返すとか精神年齢低すぎだろ
下手にでる事も出来ない奴って・・・出世できねーぞwwwww
0401デフォルトの名無しさん2006/11/18(土) 10:54:29
>>400
木津着いた・・・
0402デフォルトの名無しさん2006/11/18(土) 11:42:04
実年齢が低かったら精神年齢も低くても問題ないよ
0403デフォルトの名無しさん2006/11/18(土) 12:42:39
私の書いたBubble Sortのプログラムこれであっていますか?
コンパイルして正常に動作する感じですが、提出物なので皆さんもレビューしてくださいませんか?

#include <stdio.h>
main()
{
char moji[50],wk;
int i,owari;
printf("文字列を入力してください。隣接交換法で昇順にソートします\n");
scanf("%s",moji);
/* printf("%s\n",moji); */
/* 入力された文字列の終わりを求める */
for ( owari = 0 ; moji[owari] ; owari++)
; /* owariの中身が要素数になる */
/*printf("%d\n",owari); */
for ( ; owari >= 2 ; owari-- ){
for ( i = 0 ; i+1 < owari ; i++ ){
if ( moji[i] > moji[i+1] ){
wk = moji[i];
moji[i] = moji[i+1];
moji[i+1] = wk;
}
printf("%s\n",moji);
}
}
printf("ソート後の文字列は %s です。\n",moji);
}
0404デフォルトの名無しさん2006/11/18(土) 12:55:15
>>403 「正常に動作」の定義は?
0405デフォルトの名無しさん2006/11/18(土) 13:07:43
初心者です。
関数で「*strcpy」とかについている「*」の意味ってなんですか?
ポインタ?
0406デフォルトの名無しさん2006/11/18(土) 13:10:35
>>405
ポインタ。
0407デフォルトの名無しさん2006/11/18(土) 13:13:28
>>403
{を行末に付けるの止めれ。ブロックが見にくい
scanfに&が無い
scanfだと50文字以上入力されてもわからない
for (; owari >= 2 ; owari-- ) → for (; owari >1 ; owari-- )
逐次ソート結果出力はイラネ。
0408デフォルトの名無しさん2006/11/18(土) 13:15:08
[ ]は自由の牢獄
* は希望の光
両者は同じであり、異なる。
0409デフォルトの名無しさん2006/11/18(土) 13:17:28
>>407 本当にお疲れ様でした。
>{を行末に付けるの止めれ。ブロックが見にくい
フリーフォーマット(感想はチラシの裏に)
>scanfに&が無い
配列なのに必要?
>逐次ソート結果出力はイラネ。
「正常に動作」の定義は?
0410デフォルトの名無しさん2006/11/18(土) 13:17:46
あとforの後にスペース入れるのも止めれ。読みづらい。
0411デフォルトの名無しさん2006/11/18(土) 13:18:54
>>403 個人差があるとは思うけどレビューってことで
変数名の変更(変数間の関係が分かりやすいように)
moji → mojiretu
owari → mojiretu_len

標準関数を使う
mojiretu_len=strlen(mojiretu);

ループ用変数は別に用意する(文字列の長さを示す変数を変更しない)
04124052006/11/18(土) 13:19:47
なんか理解しました。
0413もんた2006/11/18(土) 14:41:30
キーボードからの入力で、EXITと入力すると
プログラムが終了するようにはどうしたらできますか?
0414デフォルトの名無しさん2006/11/18(土) 14:46:23
>>413
if (strcmp(str, "EXIT") == 0) exit(0);
0415もんた2006/11/18(土) 14:50:36
>>414

宣言は何がいりますか?
0416デフォルトの名無しさん2006/11/18(土) 14:51:26
>>415
exitで終わらせたいコードを載せたほうが早いよ。
0417もんた2006/11/18(土) 14:54:16
while (scanf("%s", s) == 1) {

for (i = x = y =n_y= 0; s[i]; i++){
printf("%s\n", s);

if (!(p = strchr(r, s[i]))) {

break ; }
この部分でfscanでEXITが入ると終了したいんですが。
0418もんた2006/11/18(土) 15:00:58
すいませんscanfでEXITが入ると終了したいんですが
0419デフォルトの名無しさん2006/11/18(土) 15:02:04
>>417
while (scanf("%s", s) == 1) { 
if (strcmp(s, "EXIT") == 0) exit(0); 

scanf()の次の行に入れればいいかな。

ファイルの先頭あたりに、
#include <stdlib.h>
#include <string.h>
という行がなかったら追加する。

0420もんた2006/11/18(土) 15:10:12
できました。ありがとうございます。

if (!(p = strchr(r, s[i]))) {
の行で、
コンパイラに、おそらく不正な代入関数(main)とでるのですが。
何か分かりますか?
0421デフォルトの名無しさん2006/11/18(土) 15:12:39
>>420
p = strchr(r, s[i])
これが代入になってるため
コンパイラは本本当は == 何じゃね?と勘違いしてメッセージをだす
むしすればおk
0422デフォルトの名無しさん2006/11/18(土) 15:14:21
それで警告出るなら、二行に分けて書くしかないかな?

p = strchr(r, s[i]);
if (!p) { 

コンパイラのオプションを調べて、その警告をでなくするか。
0423もんた2006/11/18(土) 15:15:10
>>421
わかりました。ありがとうございました。
04244212006/11/18(土) 15:40:49
>>423
if ( (p = strchr(r, s[i])) == 0 ) {
でもいい
0425デフォルトの名無しさん2006/11/18(土) 15:42:35
>>424
代入をカッコでくくって、!してる式でも警告がでるなら、それでも出るんじゃないの?
0426デフォルトの名無しさん2006/11/18(土) 15:59:31
>>425
いや ( (p = strchr(r, s[i])) == 0 ) はたぶんだが式中に比較演算子があるのでコンパイラは「比較している」と認識する
(!(p = strchr(r, s[i])) だと代入演算と論理演算しかないため式中で比較していないと認識するのではないかと思う
0427デフォルトの名無しさん2006/11/18(土) 18:17:10
#include<stdio.h>
#define MAX100
#define PRIME0
#define NOT_PRIME1

int main(void)
{
int number[MAX+1];
int i,j;


for(i = 1; i <= MAX; i = i + 1)
number[i] = PRIME;


number[1] = NOT_PRIME;
for(i = 2; i <= MAX; i = i + 1) {
if(number[i] == PRIME) {
for(j = 2 * i; j <= MAX; j = j + 1)
number[j] = NOT_PRIME;
}
}


for(i = 1; i <= MAX; i = i + 1)
if(number[i] == PRIME)
printf("%d\n",i);

return(0);
}

100までの素数検索プログラムなんですけど実行結果が変です。どこかおかしいところありますか?
0428デフォルトの名無しさん2006/11/18(土) 18:20:16
>>427
defineがおかしくね?
04294282006/11/18(土) 18:22:43
>>427
と思ったらそれだけじゃなったな
0430デフォルトの名無しさん2006/11/18(土) 18:28:46
for(j = 2 * i; j <= MAX; j = j + i)
ここがおかしかった自己解決
どうもすいませんでした
0431デフォルトの名無しさん2006/11/18(土) 19:51:46
なんでこれ aとbの中身を交換できないの〜?

#include <stdio.h>
main()
{
char a='A',b='B',*ap,*bp;
printf("%c %c\n\n",a,b);
ap = &a;
bp = &b;
a = *bp;
b = *ap;
printf("%c %c",a,b);
}

$ ./pointer.exe
A B

B B

ってなる・・・どうすればいいのでしょう?アドレスを習ったばかりでアドレスを使って交換
する方法を考えています。
0432デフォルトの名無しさん2006/11/18(土) 19:55:11
>>431
頭を柔らかくして考えてみな
a = *bp;このときaのアドレスにbpの中身つまり'B'が代入された
そしてb = *ap;この時ののapはaのアドレスを示している
aのアドレスに入っているのは'B'
もうOKか?
0433デフォルトの名無しさん2006/11/18(土) 20:09:11
>>432
おおお!ななななななるほど!

普通の変数wkみたいには行かないってことかぁ・・・

もっとよく考えて見ます。ありがとう御座います。
0434デフォルトの名無しさん2006/11/18(土) 20:23:07
>>433
普通の変数でも同じ。

char a='A',b='B';
a=b;
b=a;

だと交換できないよ。
0435デフォルトの名無しさん2006/11/18(土) 22:01:12
常識ちぇきに考えちぇ変数二ちゅじゃ交換できないだろ
0436デフォルトの名無しさん2006/11/18(土) 22:10:56
warning: comparison between pointer and integer
こんなエラーが出たんですけど、わけわかりません・・・
0437デフォルトの名無しさん2006/11/18(土) 22:13:24
>>436
ポインタとintを比較してますよ。
0438デフォルトの名無しさん2006/11/18(土) 22:27:09
>>437
いいえ。ポインタと整数を比較しているんです。
0439デフォルトの名無しさん2006/11/18(土) 22:34:15
ポインタと整数を比較・・・
かぁ〜もうめんどくせ〜
違う方法でやるか・・・
0440デフォルトの名無しさん2006/11/18(土) 22:52:05
>>439
何を比較したいの?
キャストすれば?
0441デフォルトの名無しさん2006/11/18(土) 23:43:51
警告なら行番号くらいでてるだろ
その行くらい晒せばいいんじゃね
0442デフォルトの名無しさん2006/11/19(日) 00:56:47
初めまして。プログラムの勉強をしようと思い「14歳から始めるわくわくゲームプログラミング」という本を買いました。
P74に書いてあるサンプルプログラムを本の通り書いたのですが

エラー E2293 C:\MyC\dxtest\dxtest.cpp 9: ) が必要(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
と表示されてしまいます。
---------------------------------------------------------------------
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)

{changewindowmode(true);

if(dxlib_Init() ==-1) return(-1);

int drawbox(0,0,120,120,6553,true);

int waitkey();

int DxLib_end();

return(0);}
-------------------------------------------------------------------
どこをどう直せばいいですか?
スレ違いでしたらごめんなさい。
0443デフォルトの名無しさん2006/11/19(日) 01:10:11
どこから突っ込むべきか迷ったから、修正版を先にあげるぞ。
///////ここから
#include "DxLib.h" 

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC) 
{ChangeWindowMode(true); 
if(DxLib_Init() ==-1) return(-1); 

DrawBox(25,25,120,120,6553,true); 
WaitKey(); 
DxLib_End(); 
return  0;}
///ここまで
0444デフォルトの名無しさん2006/11/19(日) 01:14:00
>>443
ありがとうございます。
無事動きましたが一体どこが悪かったんでしょうか?
C言語のコマンドは大文字・小文字で全く違う意味になると考えればいいですか?
04454432006/11/19(日) 01:20:39
まず、一つ目は大文字と小文字は区別されるってこと。
changewindowmode と ChangeWindowModeは別物扱い。
他にも幾つか間違ってるが、自分で確認してくれ。

それと、2つ目int drawbox(0,0,120,120,6553,true);   int waitkey();   int DxLib_end();
のintは付かない。 
詳しく説明するとめんどいから、軽くするが、 int WiINAPI WinMain() {}
ってのは、関数を作ってる。感覚。
逸れに対して、ただの DxLib_Init() ってのはどっかに作った関数を呼び出してる感覚。
DrawBox()とWaitKey()とDxLib_End()はここでは作るわけじゃく呼び出してるので、 intなどが付かない。
04464432006/11/19(日) 01:33:48
こんなので、関数のイメージをつかんでみるといいかもしれん。
//ここから
#include "DxLib.h" 
void muro(int a)
{DrawString( 250 , a*32 , "これはmuro()関数内の処理" , 38453 );
}
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC) 
{ChangeWindowMode(true); 
if(DxLib_Init() ==-1) return(-1); 
muro(2);
WaitKey();
DrawBox(25,25,120,120,6553,true); 
DrawString( 250 , 240 - 32 , "WinMain()関数内の処理" , 56453 );
WaitKey();
muro(3);
WaitKey();
DxLib_End(); 
return  0;}
//ここまで
muro()関数を作って、それをDxLib_End()やWaitKey()
そしてDrawBox()と同じように呼び出している。
のがつかめれば上出来。
muro()のカッコ内が変わると、表示される位置がズレルのも注目。
0447デフォルトの名無しさん2006/11/19(日) 01:50:14
370ページの入門書終わらしたのですが、イメージしか
掴めませんでした、不向きでしょうか?
0448デフォルトの名無しさん2006/11/19(日) 02:08:00
プログラムを書いている途中
printf("%*s%s\n",horse_pos[r],"",horse[r]);
とあったのですが、,horse_pos[r],"",horse[r]);
の部分の,""の意味が分かりません
どなたか教えていただけませんか?
0449デフォルトの名無しさん2006/11/19(日) 03:18:17
printf("%*s%s\n",horse_pos[r],"あいうえお",horse[r]);

だったら分かるんか?
0450デフォルトの名無しさん2006/11/19(日) 04:09:06
>>447
イメージが掴めたならその内なんとかなるよ。
あとは、コードを読んで分析理解して、
コードを書いて試行錯誤していけばいい。
0451デフォルトの名無しさん2006/11/19(日) 04:51:39
>>450
そういわれると、嬉しいです。
中には掴めない方もいるでしょうか?
0452デフォルトの名無しさん2006/11/19(日) 06:35:52
入門書は著者自身が誤解しているとしか思えない本が多いので、
間違ったイメージであることも多い。
自分で書いて適当な場所で他人にレビューしてもらうことを勧める

最初は けなされると思うが。
0453static2006/11/19(日) 07:27:22
初めまして。書籍を参考にしながら独自コードに直している間につまづきました。
static修飾子について質問させてください。

static修飾子をつけた同じクラスのメンバにアクセスさせると、
コンパイル時にリンクエラーになります。
参考にした書籍にはそのように載っているので、何か条件があるのだと思いますがわかりません。
何から疑っていったら良いでしょうか。
具体的には、下記のようなコードの場合にエラーになります。

class CWindow {
public:
  HWND RegistWindow(char* wndName, char* wndTitle, int posXX, int posYY);
protected:
  static LRESULT CALLBACK _WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  static CWindow* m_static;
};

LRESULT CALLBACK CWindow::_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  CWindow* p = m_static;  // こいつがいけないらしい
}

HWND CWindow::RegistWindow(char* wndName, char* wndTitle, int posXX, int posYY) {
  m_static = this;  // これもいけないらしい
}
0454デフォルトの名無しさん2006/11/19(日) 08:06:29
ここはCスレ。C++の話題はスレ違い。

【初心者歓迎】C/C++室 Ver.32【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1160893851/
0455πr^22006/11/19(日) 11:16:01
char * str[] = {"String1","String2"}
などとなっているchar[]のポインタをリターンする関数はどう宣言すればいいのでしょうか。
0456デフォルトの名無しさん2006/11/19(日) 11:18:02
char ** foo()
{
static const char * const static_strings[] = {"string1", "string2",};
return static_strings;
}
■ このスレッドは過去ログ倉庫に格納されています