- 1 名前: ◆h6A7qfFFu6 mailto:sage [2008/12/29(月) 11:05:07 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/
- 602 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 09:43:28 ]
- >>600-601
サンクス
- 603 名前:536 [2009/01/04(日) 10:55:21 ]
- >>580
丁寧にありがとうございます。 しかによくわからない点があります。 >変数に & を付ける事によって得られるポインタの型は、 >元の変数の型に * をつけた形で表現する。 つまりこれで先ほどの例だと int n; という宣言が先に必ずある int *p = &n; その上で、元の変数の型はint n よりint型であることがわかっているので p の型はintにしないといけない。よって、nのアドレスが格納されているpは、 (元の変数の型)intに*をつけて int *pとあらわすということですよね。 しかしよくわからないのですが、p = &n; とint *p = &nの違いがわかりません 前者はpにはnのアドレスの値が入っている。 後者はpにはnのアドレスの値が入っているのではないのでしょうか? 前者だと先にint p; と宣言しておけばp はint型になるのでは?
- 604 名前:536 [2009/01/04(日) 10:57:59 ]
- あと、もう1点ですが
>char *c = (char*)p; int *p = &n; としたのなら、 char*c = (char*)*p もしくはchar*c = (char)*p となるのではないのでしょうか?
- 605 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:04:19 ]
- 二段ダブルベット
- 606 名前:536 [2009/01/04(日) 11:10:16 ]
- すみません、もうひとつ
先ほどの例の場合 int型をchar型にする利点というか意味がわからないのですが サイズが異なる構造体をキャストしたら中身が全然違うのに型を変えるとか想像がつきません
- 607 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:13:34 ]
- >>603
>>580ではないけど、 その日本語だと君がどこまで理解できたのかが分からない 材料は揃ってるようだから、手を動かしたほうがいいよ。 問題の値をそれぞれprintf()してどうなったか、 試すくらいはしてから再度の質問はするものだ
- 608 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:18:19 ]
- 型宣言の *と
演算子の*を混同している・・・・?
- 609 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:20:10 ]
- C言語でおk
- 610 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:28:42 ]
- >p の型はintにしないといけない。よって、nのアドレスが格納されているpは、
p の型は int へのポインタ型。 >しかしよくわからないのですが、p = &n; とint *p = &nの違いがわかりません >前者だと先にint p; と宣言しておけばp はint型になるのでは? int *p; と宣言してあれば両者はほぼ同じ。 int* っていうのは「int へのポインタ」っていう「型」だってのは OK? ポインタと元の型はきちんと区別するべき。 >int *p = &n; としたのなら、 >char*c = (char*)*p もしくはchar*c = (char)*p となるのではないのでしょうか? c は char へのポインタ型。p は int へのポインタ型。*p は int 型。 (char*)*p だと int 型を char へのポインタという型に変換している(c と型は一致するが普通意味を持たない)。 (char)*p だと int 型を char 型へ変換している(c と型が違うのでコンパイルできない)。 >int型をchar型にする利点というか意味がわからないのですが >サイズが異なる構造体をキャストしたら中身が全然違うのに型を変えるとか想像がつきません int へのポインタ型を char へのポインタ型にしても大抵メリットはない。 sockaddr 型と sockaddr_in 型は >571 の通り sa_family の部分は共通しているので >557 の通り sockaddr へのポインタ型を経由して sa_family を読み出し、AF_INET だったら実は sockaddr_in を指していたんだとして キャストしてきちんと読み出すことができる。 つまり関数の引数の型としては sockaddr へのポインタ型としてまとめておいて、実際には sa_family に応じて 正しい型にキャストして使うことができる。
- 611 名前:536 [2009/01/04(日) 11:33:40 ]
- int へのポインタ型。ってのがよくわからないのですが
一つのプログラムでintを宣言する変数なんてたくさんでてくるとおもうのですが、 この場合、intへのポイントとはどうなるのでしょうか?
- 612 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:43:30 ]
- >536
キャストもポインタもないこのコードは理解できる? sockaddr, sockaddr_in, connect() についても本質的にはこのコードみたいなことをしている(type が sa_family)。 #include <stdio.h> struct Any { enum { CHAR, INT, DOUBLE } type; union { char c; int n; double d; } u; }; void print(struct Any a) { if(a.type == CHAR) printf("%c\n", a.u.c); if(a.type == INT) printf("%d\n", a.u.n); if(a.type == DOUBLE) printf("%f\n", a.u.d); } int main(void) { struct A a; a.type = CHAR; a.u.c = '>'; print(a); a.type = INT; a.u.n = 536; print(a); return 0; } もっとも共用体が分かるなら最初っから理解できているような気もするけど。 分からなかったら余計混乱する気がするんで無視してくれ。
- 613 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 11:49:45 ]
- >611
>一つのプログラムでintを宣言する変数なんてたくさんでてくるとおもうのですが、 >この場合、intへのポイントとはどうなるのでしょうか? そうだね。だから色んな場所を指せるし、指し直したりできる。 char c1; char c2; int n; char *p; /* どこも指してない */ p = &c1; /* c1 のアドレスを指す */ p = &c2; /* c2 のアドレスを指す */ p = (char*)&n; /* n は char型じゃないけどキャストして無理矢理 n の(先頭)アドレスを指す */
- 614 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:15:32 ]
- 麻雀は分かるか? 二盃口は七対子と見た目は同じだよね。
|二|二|三|三|四|四|七|七|八|八|九|九|發|發| |萬|萬|萬|萬|萬|萬|索|索|索|索|索|索| | | これを一盃口を1かたまりで解釈すると二盃口と解釈できるし、 |二|二|三|三|四|四| |七|七|八|八|九|九| |發|發| |萬|萬|萬|萬|萬|萬| |索|索|索|索|索|索| | | | 全部対子で解釈すると七対子と解釈できる。 |二|二| |三|三| |四|四| |七|七| |八|八| |九|九| |發|發| |萬|萬| |萬|萬| |萬|萬| |索|索| |索|索| |索|索| | | | そして、別に役とか関係無しに単に牌が 14 個並んでいるだけだと解釈することもできる。 |二| |二| |三| |三| |四| |四| |七| |七| |八| |八| |九| |九| |發| |發| |萬| |萬| |萬| |萬| |萬| |萬| |索| |索| |索| |索| |索| |索| | | | |
- 615 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:16:14 ]
- ここで、1つの牌を1バイトと考え、
対子を2バイトの toitsu_t 型で、 一盃口を6バイトの ipeko_t 型で表せるとする。 役とは関係無しにただ牌が 14 個並んでいると解釈している時は手牌を char tehai[14]; というただの char 配列で眺めているのに相当する。 二盃口と解釈している時は手牌を struct ryanpeko_t { ipeko_t ipeko[2]; toitsu_t toitsu; }; という構造体だと見なして解釈しているのに相当する。 七対子と解釈している時は手牌を struct chitoitsu_t { toitsu_t toitsu[7]; }; という構造体だと見なして解釈しているのに相当する。
- 616 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:16:36 ]
- #include <iostream>
using namespace std; #include <math.h> void atai(); int main() { cout<<"こんにちわ。"<< endl; atai(); return 0; } void atai() { double v;/*v=物体の速さ*/ double undou;/*運動する物体の時間の刻み*/ double c = 108000000;/*光の速さ*/ cout<<"物体の速さ入力:(km)"; cin>>v; double ruto; ruto = sqrt(1 / (1.0000000 - (v/c) * (v/c))); undou = ruto; cout<<"物体の時間の刻み"<<undou<<endl; cout<<"静止している物体が1年間すごしている間"<<endl; cout<<"運動している物体は"<<1 / ruto<<"年間過ごしてる"<<endl; } 光の速さより大きい数字を入力すると-1.#INDと、表示されます・・
- 617 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:17:38 ]
- 役が成り立っているか脳内で判定してると思うが、
まあそういう役が成り立っているかを判定する関数があるとする。 int check_toitsu(const toitsu_t *toitsu); /* ちゃんと対子として成り立っていれば 1 を、そうでなければ 0 を返す */ int check_ipeko(const ipeko_t *ipeko); /* ちゃんと一盃口として成り立っていれば 1 を、そうでなければ 0 を返す */ これを使って ryanpeko_t 型の値が本当に二盃口として成り立っているのかをチェックする関数を作ると、こうなって、 int check_ryanpeko(const ryanpeko_t *ryanpeko) { return check_ipeko(&ryanpeko->ipeko[0]) && check_ipeko(&ryanpeko->ipeko[1]) && check_toitsu(&ryanpeko->toitsu); } chitoitsu_t 型の値が本当に七対子として成り立っているのかをチェックする関数を作ると、こうなる。 int check_chitoitsu(const chitoitsu_t *chitoitsu) { int i; for (i = 0; i < 7; i++) if (!check_toitsu(chitoitsu->toitsu[i])) return 0; return 1; } んで、手牌 tehai をこのチェック関数に渡すには、こんな感じになるわけだ。 if (check_ryanpeko((const ryanpeko_t*)&tehai)) puts("二盃口として解釈可能です"); if (check_chitoitsu((const chitoitsu_t*)&tehai)) puts("七対子として解釈可能です");
- 618 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:18:15 ]
- >>616
負の値の平方根はできない
- 619 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:18:41 ]
- とりあえず、「速さ」の単位は「km」じゃないよ。
ローレンツ変換の前に学ぶことがあると思うんだ。。
- 620 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:19:08 ]
- 割り込まれてしまったが、
>>614>>615>>617 の順で読んでくれ。
- 621 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:20:49 ]
- すげーな、この流れは
ポインタFAQ用のテンプレとして、是非利用すべきだ まったく読んでないけど
- 622 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:20:59 ]
- >>616
#include <complex.h>
- 623 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:25:46 ]
- >>619
cが時速なんで許容範囲のようだ
- 624 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:28:52 ]
- 年速じゃないの?
- 625 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:31:13 ]
- >>619
ごめんなさい・・・
- 626 名前:536 [2009/01/04(日) 12:32:34 ]
- >>610
sockaddrのほうはsa_family inのほうはsin_family 共通してないきがするのですが、 キャストしても別に扱われるのでは?
- 627 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:36:00 ]
- fopen_sとfclose関数を用いてファイルの読み書きするプログラムを作成しているのですが、
ファイルを新規に作成し書き込む場合に、 すでに同名のファイルが存在する場合や、ディレクトリーに書き込めない場合に エラーを返すようにするにはどうすればよいでしょうか?
- 628 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:39:18 ]
- >>624
c = 108000000なんで時速kmになってる
- 629 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:40:10 ]
- char mem[sizeof(sockaddr)];
struct sockaddr *sad = (struct sockaddr *)mem; struct sockaddr_in *sadi = (struct sockaddr_in *)mem; とすると、 sad->sa_familyは、memの0バイト目からsizeof(u_short)バイト sadi->sin_familyは、memの0バイト目からsizeof(short)バイト の領域をその値とする。 呼び方が違うだけで、同じデータ。
- 630 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:48:45 ]
- そもそも長さと速さの単位の違いを分かっているのだろうか。
- 631 名前:536 [2009/01/04(日) 12:50:08 ]
- てことは、つまりsockaadr_inにあった各変数がキャストした型にあてはめられる?
struct sockaddrn{ u_short sa_family = sin_family; char sa_data[2]; = short sin_port; char sa_data[4]; = in_addr sin_addr; char sa_data[4]; = sin_zero[8]; }; こういうことになるということでしょうか? あと、sizeof(sockaddr)をするとなんでsockaddr_inのサイズもわかるのかわかりません。 これは、sockaddrとsockaddr_inの構造体のサイズが同じだから 別にsizeof(sockaddr_in)でもいいということかな
- 632 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:51:54 ]
- こんな教えて君に付き合うなんて
おまえよっぽど暇なんだな Cの入門書でも読んどけって、話はそれからだ で済むと思うんだが
- 633 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:51:56 ]
- にゃ〜ん
- 634 名前:536 [2009/01/04(日) 12:52:18 ]
- >>617
麻雀はわからないのですが、*ryanpeko はどこをさしているのでしょうか?
- 635 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:52:54 ]
- >>627
fopen_s()の戻り値で判断すればいいんじゃないの? msdn.microsoft.com/ja-jp/library/z5hh6ee9(VS.80).aspx msdn.microsoft.com/ja-jp/library/t3ayayh1(VS.80).aspx
- 636 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:53:22 ]
- 修正
#include <iostream> using namespace std; #include <math.h> void atai(); int main() { cout<<"こんにちわ。"<< endl; atai(); return 0; } void atai() { double v;/*v=物体の速さ*/ double undou;/*運動する物体の時間の刻み*/ double c = 1080000000;/*光の速さ*/ cout<<"物体の速さ入力:(km/h)"; cin>>v; if(1 <= v && v <= 1080000000 ){ double ruto; ruto = sqrt(1 / (1.0000000 - (v/c) * (v/c))); undou = ruto; cout<<"物体の時間の刻み"<<undou<<endl; cout<<"静止している物体が1年間すごしている間"<<endl; cout<<"運動している物体は"<<1 / ruto<<"年間過ごしてる"<<endl; } else{ cout<<"光の速さを超えることはできません"<<endl;} }
- 637 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:54:01 ]
- >>631
connect()のソース読めよ 話はそれからだ
- 638 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:54:32 ]
- >>627
100% 完全な方法はないと思う。 1. "r" で開いて、開けたら fclose してエラーを返す。 2. "w+" で開いて、開けなかったらエラーを返す。 3. ファイルサイズが 0 でなければ fclose してエラーを返す。 4. "w" で freopen_s する。 がまだましな方法だとは思うが、 1 と 2 の僅かな間にサイズ 0 のファイルを作られたらチェックから漏れる。
- 639 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:56:13 ]
- >>631
まあそんなところだ。 sizeof に関しては、sizeof (sockaddr) は危険。 sockaddr_in を渡しているのだから、sizeof (sockaddr_in) にすべき。
- 640 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:00:30 ]
- >>636
vが光速より大きいと、v/cが1より大きくなる。そうすると(v/c) * (v/c)が1より大きくなる。 そうすると1.0000000 - (v/c) * (v/c)が負になる。そうすると1 / (1.0000000 - (v/c) * (v/c))が負になる。 そうするとsqrt()の引数が負になって定義域エラーになる。
- 641 名前:536 [2009/01/04(日) 13:02:42 ]
- なるほど。>>631みたいな感じなのですか。
これだとなんとか理解できます。こんなめんどくさいことするのはconnectの決まりだからというわけですね。
- 642 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:05:20 ]
- >>641
IP以外のプロトコルのアドレスも扱えるようにしてるんじゃないかな
- 643 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:12:24 ]
- >>641,642
おや、話が半日前に戻ったぞw 進歩がないスレだな
- 644 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:13:54 ]
- >>643
while(代入式)の人ですね?分かります
- 645 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:19:47 ]
- while君と教えて君が出現するとスレが無駄に進む
- 646 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:21:50 ]
- >>645
無駄だと思うならこのスレに来るなよ馬鹿
- 647 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:24:40 ]
- いや進めよう、いざ進め
さあ、次の質問カマーーン!?
- 648 名前:536 [2009/01/04(日) 13:27:41 ]
- char c1;
char c2; int n; char *p; /* どこも指してない */ p = (char*)&n; /* n は char型じゃないけどキャストして無理矢理 n の(先頭)アドレスを指す */ よく考えたらpはchar *pと宣言しているからpはchar型じゃないか だったら キャストなんてしなくてもいいんじゃないの? char *p p = &n; で
- 649 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:30:00 ]
- while君もcast解らん君も
自ら試すということをしないところに共通点が。 >>644 オレはレベルの低い質問については回答側だよ。 どっちも実験しようとすれば5分で結果出るじゃん。 初心者歓迎のスレは別にあるのにこのスレの存在意義が わかんね。
- 650 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:34:24 ]
- >>648
ここでそんなことしても意味ないから。 コンパイラへの明確な指示と人間の可読性を考えて ソースは書くんだよ。 > char *p > p = &n; それコンパイル通してみた? gccなら-Wallつけて、コンパイラがどう言うかちゃんと 向き合いながら勉強しなよ。
- 651 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:34:34 ]
- >>648
&nはint*型だから。 それを代入する先の変数pはそれとは異なるchar*型。 そのため、キャストして&nをchar*型にしてやらないといけない。
- 652 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:37:31 ]
- 教えたがりが殺到してわけわからなくなってるな。
- 653 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:44:33 ]
- つーか、最近の2chは微温くなったもんだな。
俺の若いころは、ちょっとバカな質問すると 逝ってよし! 半年ROMれ とか言われたもんだが
- 654 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:47:03 ]
- ここは、二番目にバカな質問を受け付けるハコだからな。
一番は、宿題スレ
- 655 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 13:54:22 ]
- >>654 thx
本当だ 初心者歓迎C/C++室の方がレベルが高いw
- 656 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:00:01 ]
- 宿題スレにだけは足を踏み入れる気がしない。
- 657 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:03:05 ]
- 宿題スレだってピンからキリまでだよ。
アホも多いけどレベル高い人もちゃんといる。
- 658 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:46:51 ]
- >>649
> 自ら試す コンパイラが通せば正しいとは限らないんだが・・・ それを指摘されてファビョったキチガイですね?分かります。
- 659 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:47:27 ]
- もう秋田
- 660 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:50:27 ]
- >>648
キャストしないとワーニングが出るよ
- 661 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:54:07 ]
- >>658
正しい場合でもそれと分からないやつにはな・・・
- 662 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:56:08 ]
- 配列のサイズを指定せず、配列に数値を格納して行く度に
配列のサイズを増やしていく方法がわかりません 言語はC++です このような事は可能なのでしょうか、また出来るなら どのようにすればいいのかご教示願います
- 663 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:59:10 ]
- >>662
std::vector か std::deque 使え。
- 664 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:59:24 ]
- STLのvectorでresize()を使うのはいかがでしょうか?
- 665 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:00:06 ]
- push_back や insert でいいだろ
- 666 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:04:32 ]
- www.amazon.co.jp/iStudy-BB-Skills-C%E8%A8%80%E8%AA%9E%E3%83%97%E3%
83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%9F%BA%E7%A4%8 E-%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88P/dp/B00008V CD1/ref=sr_1_3?ie=UTF8&s=software&qid=1231048974&sr=8-3 こいつで解決 これにて糸冬 了..._φ(゚∀゚ )
- 667 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:06:57 ]
- >>666
URL長すぎ 書籍名を書け
- 668 名前:662 mailto:sage [2009/01/04(日) 15:07:08 ]
- 皆さんありがとうございました
これで詰んでた課題が進めそうです
- 669 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:07:59 ]
- iStudy BB for IT Skills C言語プログラミング基礎 パーフェクトP
- 670 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:10:26 ]
- >>666
amazon の URL を縮める方法も知らない奴は勘弁して欲しい。 www.amazon.co.jp/dp/B00008VCD1/
- 671 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:12:20 ]
- >>670
今回だけは勘弁してやるから、URLの縮め方をここに書け
- 672 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:13:53 ]
- >>671
>>666 と >>670 を見比べりゃ分かるだろ・・・。
- 673 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:15:26 ]
- >>672
お前が分かるなら、お前がやり方を書け
- 674 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:17:24 ]
- >>673
そうやって法則性を見つける努力を怠るからダメなんだよ。
- 675 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:18:18 ]
- >>674
そんな無意味な煽りを書く暇があったら、さっさとやり方を書け
- 676 名前:URLの気持ち mailto:sage [2009/01/04(日) 15:18:27 ]
- 俺なんのために付属されたんだろう・・・orz
- 677 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:19:27 ]
- >>675
そんな無意味な煽りを書く暇があったら、さっさとやり方を考えろ
- 678 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:20:23 ]
- 暇な奴って怖いなまで読んだ
- 679 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:20:31 ]
- >>677
やり方は考えるものではなく、存在するものだ 解っているなら、さっさと書け
- 680 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:21:35 ]
- >>679
やり方は存在するものではなく、考えるものだ 解らないなら、さっさと考えろ
- 681 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:21:50 ]
- よーしパパがんばって教えちゃうぞー
って仕事の電話が すまん今はダメのようだ
- 682 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:22:41 ]
- よーしパパがんばってID出しちゃうぞー☆
- 683 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:23:27 ]
- 質問に答えない、無意味な質問スレッド
死ね
- 684 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:27:13 ]
- 教えて欲しいなら下手に出ろよw
- 685 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:29:06 ]
- 下手に出ても教えないけどな。
見りゃすぐ解る事を教える事ほど害悪なことは無い。
- 686 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:33:12 ]
- ワカラン → 教えろカス → 嫌 → 氏ね
小学生ですね わかります
- 687 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:34:01 ]
- >>683
おめーに答える義務はねー
- 688 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:40:37 ]
- 3分LifeHacking:Amazonの長いURLを短縮表示する - ITmedia Biz.ID
www.itmedia.co.jp/bizid/articles/0805/13/news065.html
- 689 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:42:37 ]
- >>684
死ね >>685 死ね >>686 死ね >>687 死ね >>688 ありがとう
- 690 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 15:43:20 ]
- >>688
死ね
- 691 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:05:14 ]
- www.amazon.co.jp/iStudy-BB-Skills-C%E8%A8%80%E8%AA%9E%E3%83%97%E3%
83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%9F%BA%E7%A4%8 E-%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88P/dp/B00008V CD1/ref=sr_1_3?ie=UTF8&s=software&qid=1231048974&sr=8-3 www.amazon.co.jp/dp/B00008VCD1/ え?これの区別も一人で解決できないの? 辞めたほうがいいよ 君 てか こないで
- 692 名前:デフォルトの名無しさん [2009/01/04(日) 16:05:54 ]
- void error(char * errormessage)
{ perror(errormessage); exit(1); } error("エラーです") これを実行するとエラーです と表示されますよね でも、 void mputs(char *p) { while(*p); printf("&c", *p); p++; } printf("\n"); } mputs("エラーです”); 前者と後者では表示される文字は同じですよね。 後者だと変数pが指定する領域を1バイトのchar型として、読み取るので1文字ずつループしていってますよね でも前者だとそのようなループがないのに、1バイトのchar型として一度に全部の文字を表示しているって おかしくないでしょうか?
- 693 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:10:46 ]
- >>689
wktk.vip2ch.com/vipper0531.jpg
- 694 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:12:04 ]
- >>692
先ず、Cでは文字列をどう表わすか知ってる?
- 695 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:12:55 ]
- >>692
void perror( const char *string ); 文字列の先頭のアドレスを指定します 何の問題もありません
- 696 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:14:58 ]
- >>692
char *aiueo = "あいうえお"; myprint(aiueo); void myprint(char *str) { printf("%s\n", str); } 何かおかしい?
- 697 名前:デフォルトの名無しさん [2009/01/04(日) 16:19:26 ]
- >>696
ポインタ使う必要があるのでしょうか?
- 698 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:21:02 ]
- >>697
それでは、逆にポインタを使わなければどうなるのでしょうか?
- 699 名前:デフォルトの名無しさん [2009/01/04(日) 16:21:48 ]
- >>698
ポインタ使う場合は、下記の文になる 使わないとできない void mputs(char *p) { while(*p); printf("&c", *p); p++; } printf("\n"); } mputs("エラーです”);
- 700 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 16:31:26 ]
- string aiueo("あいうえお");
myprint(aiueo); void myprint(string str) { cout << str << endl; }
- 701 名前:デフォルトの名無しさん [2009/01/04(日) 16:38:39 ]
- char *aiueo = "あいうえお";
myprint(aiueo); void myprint(char *str) { printf("%s\n", str); } 変数aieuoに文字列 あいうえお を代入 char[0]にあ char[1]にい char[2]にう を入れる。 つまり、aiueoが指すアドレス領域はすべてchar型だと で、aiueoを指定するとchar[0]のアドレスが得られる。 そのアドレスを引数にして関数に渡す。渡された関数でも同じことをし str配列の中身を全て表示する ということでしょうか
- 702 名前:デフォルトの名無しさん [2009/01/04(日) 16:40:35 ]
- だとしたら、こんな文でするよりそっちでしたほうがいいってことですよね
こんな文は使い道ないということかな void mputs(char *p) { while(*p); printf("&c", *p); p++; } printf("\n"); } mputs("エラーです”);
|

|