- 1 名前:デフォルトの名無しさん mailto:sage [03/11/09 15:37]
- いろんなスレが乱立していますが、統合的なスレッドがないので立てました。
質問もOK 関連スレ C#って死滅する理由がないよね! Part4 pc2.2ch.net/test/read.cgi/tech/1042464104/ C#最強伝説 pc2.2ch.net/test/read.cgi/tech/1061208152/ C#とJava、どっちをおぼえればいいの? pc2.2ch.net/test/read.cgi/tech/1006715468/ C#Builder Professional 質問箱 pc2.2ch.net/test/read.cgi/tech/1062433418/ 関連リンク dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_Sharp/
- 802 名前:デフォルトの名無しさん [2007/10/31(水) 11:38:23 ]
- C++を学習するのに適切な書籍、WEBを紹介してください。
機械語、Cなどの言語は習得済です。
- 803 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:23:45 ]
- 質問です。
バイナリファイルを開いて、ファイルの先頭から順番に0、1を判別していきたいのですがどうすればいいでしょうか? rbでファイルを開いてから後がどうしていいのかさっぱりわかりません。
- 804 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:41:13 ]
- getc(fp) でファイルの先頭から順番に 1 バイトずつ読み込める
- 805 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 19:54:45 ]
- mmapとSystem Vの共有メモリって、
どちらにどういう長所短所があるんでしょうか。
- 806 名前:デフォルトの名無しさん [2007/12/08(土) 04:59:38 ]
- bcc5.5って実行が長いプログラムだと途中で止まるとか仕様ある?
- 807 名前:デフォルトの名無しさん [2007/12/08(土) 05:28:15 ]
- ないだろ
- 808 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 06:11:57 ]
- だよな。同じプログラムを100回動かそうと思ってやってんだけど90回はできて100回はできない・・・
- 809 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:23:24 ]
- pink.gazo-ch.net/bbs/27/img/200512/550933.jpg
- 810 名前:デフォルトの名無しさん [2007/12/09(日) 00:33:09 ]
- >>808
そりゃどっかにバグがあんだよ。 勘だけど、メモリがらみと見た。
- 811 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:14:10 ]
- int型のiを文字列に直す方法はありますか?
コンパイラはgcc, 言語はC言語です。 あとstrcatが3つ以上の引数をとれないようなのは仕様ですか?
- 812 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:24:10 ]
- > int型のiを文字列に直す方法はありますか?
sprintf,snprintf > あとstrcatが3つ以上の引数をとれないようなのは仕様ですか? 三つ目に何渡す気だ
- 813 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:35:00 ]
- いや
"a" + i + "b" のようなことがしたいので、 strcat("a", i, "b"); と出来たらなと。
- 814 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 00:08:17 ]
- C++をやりましょう。
簡単にできますから。
- 815 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 12:01:51 ]
- >>814
サーセン本線はRubyでして。
- 816 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 15:24:37 ]
- sprintf()でなにが不足なんだ?
sprintf(buf, "%s%d%s", "a", 3, b);
- 817 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:06:42 ]
- 教えてください。union ビットフィールド型を引数としてわたしたいのですが、
それは可能なのでしょうか?
- 818 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:25:45 ]
- >>817
なんでできないと思ったの?
- 819 名前:817 mailto:sage [2008/01/15(火) 20:56:24 ]
- >>818
union { /* WCER */ unsigned char BYTE; /* Byte Access */ struct { /* Bit Access */ unsigned char B7:1; /* Bit 7 */ unsigned char B6:1; /* Bit 6 */ unsigned char B5:1; /* Bit 5 */ unsigned char B4:1; /* Bit 4 */ unsigned char B3:1; /* Bit 3 */ unsigned char B2:1; /* Bit 2 */ unsigned char B1:1; /* Bit 1 */ unsigned char B0:1; /* Bit 0 */ } BIT; /* */ } WCER; /* */ このような定義がある場合に関数funk()の引数にWCER.BIT.B1を渡し、 関数内でB1の値を変更したいのですが、コンパイラが直接ビット操作のマシン語に置き換えるために、 引数や変数にはビット情報を保持できないと思っています。 その操作が必要なアドレスやビット位置を引数として渡して操作することは可能と思うのですが 処理速度を求めるためにビット直接操作したいのです。
- 820 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:58:41 ]
- WCERごと渡せばいいんでないの?
- 821 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:08:10 ]
- 速度が欲しくて1ビット単位の書き換えとか頭おかしいんじゃね?
- 822 名前:817 mailto:sage [2008/01/15(火) 23:53:14 ]
- >>820
ありがとうございます。 WCERではなく、結合先によってビット位置が異なっています。 >>821 マイクロ秒単位で処理をつめていますので毎回ビット位置計算をすると相当な重さになってしまいます。
- 823 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:00:24 ]
- ビットフィールド使うのをやめるといいと思うんだ
- 824 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:15:46 ]
- >このような定義がある場合に関数funk()の引数にWCER.BIT.B1を渡し、
>関数内でB1の値を変更したいのですが、コンパイラが直接ビット操作のマシン語に置き換えるために、 >引数や変数にはビット情報を保持できないと思っています。 いいえ。ビットフィールドは渡せませんが、ビット情報は渡せます。 >処理速度を求めるためにビット直接操作したいのです。 いいえ。ビットフィールドを直接扱うことが最速とは限りません。 >WCERではなく、結合先によってビット位置が異なっています。 「結合先」ってなんですか? 自分語りをされても困りますが。 >マイクロ秒単位で処理をつめていますので毎回ビット位置計算をすると相当な重さになってしまいます。 いいえ。そんなのんびりした処理をするのなら多少重くてもなんら影響しません。 そもそも、ビット位置の計算は決して重い処理じゃありません。 結論。 >823
- 825 名前:デフォルトの名無しさん [2008/01/21(月) 20:09:47 ]
- Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。 そんな人に限って、自分のレベルの低さを自覚していない、、、 本人は構わないかもしれませんが、その下についた新人プログラマは たまったものではありません。(私が経験しました。) 今になって分かりました。 彼らもまた、理解できていなかったのです。 プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。 私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。 私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、 今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。 と、嬉しいコメントをたくさんもらいました。 そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。 興味がある方はどうか、下のサイトをみてみてください。 mori.eco.to/
- 826 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 10:31:13 ]
- よし、NG追加
- 827 名前:デフォルトの名無しさん [2008/01/30(水) 20:22:40 ]
- すいません、c言語初心者なのですが以下のプログラムがうまくいかないのですがなんででしょうか?
修正点教えてもらえませんか? #include<stdio.h> #include <string.h> #define STR_SIZE 256 int main(int argc, char *argv[]) { int cnt; int pri_cnt; int n; int k; int sort_cnt1; int sort_cnt2; char temp[1]; if(argc < 3) { printf("\nUsage : %s STRING1 STRING2 [STRING3 ...\n\n",argv[0]); return 1; } printf("\n** String data **"); for(cnt = 1 ; cnt < argc ; cnt++) { printf("\n%s",argv[cnt]); } printf("\n** Changed string **");
- 828 名前:デフォルトの名無しさん [2008/01/30(水) 20:23:32 ]
- for(cnt = 1; cnt < argc ; ++cnt)
{ k = strlen(argv[cnt]); for(n = 0; n < k ; ++n) { argv[cnt][n] = argv[cnt][n] - 0x20; } } for(sort_cnt1 = 1 ; sort_cnt1 < argc ; sort_cnt1++) { for(sort_cnt2 = sort_cnt1+1 ; sort_cnt2 < argc ; sort_cnt2++) { if(argv[sort_cnt1] > argv[sort_cnt2]) { temp = argv[sort_cnt2]; argv[sort_cnt2] = argv[sort_cnt1]; argv[sort_cnt1] = temp; } } } for(pri_cnt = 0 ; pri_cnt < cnt ; pri_cnt++) { printf("\n%s",argv[pri_cnt]); } return 0; }
- 829 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:26:33 ]
- #include <iostream>
#include <string.h> using namespace std; int main() { char str[256] = "<a href=\"localhost\">link</a>" "<a href=\"localhost\">link2</a>"; char *ptr; int i = 0; ptr = str; while(1) { ptr = strstr(ptr,"http://"); if(!ptr) break; ptr += 7; i++; } printf("http://の出現数は%dです。\n",i); return 0; } http://の出現回数を数えているのですが、 悪い点、改善点等のご指摘を下さい。
- 830 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:08:31 ]
- >>827
そのプログラムの目的と、どううまくいかないのかくらい書け。 >>829 お前もだ。 取り敢えず、C++ならstring.hではなくcstringをインクルードしとけ。 strの文字数は、その場合は自分で256に決めずにコンパイラに任せておけ。 流れを説明し易いように、iなんて変数名でカウントするのはやめておけ。 ptrを初期化しないで後から代入しているが、宣言時に初期化してしまえ。
- 831 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:51:15 ]
- 「g++43でコンパイルできないんだけど、どう修正したら
いいの?」とかいう質問はここでいいんでしょうか?
- 832 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:16:36 ]
- いいよ
もしソースが長いなら直接貼らずにどっかうpれ
- 833 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:19:07 ]
- >>831
他のコンパイラでコンパイルできると言うのなら、g++の問題だろうからgccスレがいいんじゃね? そうじゃなくて、たまたま使ったのがg++だと言うのなら、ここでもいいと思うけど。
- 834 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:39:27 ]
- >>833
「他のコンパイラ」のほうの問題かもしれないだろ C++だとそういうケースがよくある
- 835 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:01:39 ]
- upstreamの開発者の人にも一応pingは
したのですが、 具体的には downloads.sourceforge.net/mecab/mecab-0.96.tar.gz をg++43でコンパイルしようとすると param.h:34: error: explicit template specialization cannot have a storage class というエラーが出てコンパイル出来ない、という問題です。 bugs.debian.org/cgi-bin/bugreport.cgi?bug=461727 (私自身はdebianのmecabのメンテナではありません)
- 836 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:03:21 ]
- 因みにg++41では問題ないです。
- 837 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:04:50 ]
- gcc.gnu.org/ml/gcc-patches/2007-06/msg01075.html
g++の変更の論拠がここに書いてあるな。標準の7.1.1-1を見ると確かにエラーが正しいように見える 回避策は、 1. 単に32行目のstaticを削除する これでg++-4.3ではちゃんとstatic扱いになるはずだけど、g++-4.2だとそうならないので複数定義エラーになる 2. lexical_cast自体を非staticにする 別にこれをstaticにする理由はないと思うので、20行目と32行目のstaticを削る この場合、特殊化をヘッダに置いたままにしておくと複数定義になってまずいので、 ヘッダには宣言だけにして定義をparam.cppに移すか、あるいは単にinlineを付けるのでもいい 3. lexical_castを削除する grepしてみたら使われてないようなので
- 838 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:35:02 ]
- >>837
何だか32行目のstaticを外す方向がいい気がするけど (何で lexical_castがstatic扱いなのか今のところ良く分からない ので) そうすると確かにg++43ではコンパイルが通りますがg++41では 多重定義だといってはねられますね... lexical_cast自体はparam.hの後の方で使われているっぽいです。 1.か2,かの方向で検討してみます。有難うございました。
- 839 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:45:36 ]
- >>838
>lexical_cast自体はparam.hの後の方で使われているっぽいです。 見逃がしてた、ありがとう でも非staticテンプレートからstatic関数を参照するのはODR違反のような気がする lexical_castを非staticにするのが良いかと思う
- 840 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:51:25 ]
- char *p[10];
みたいなことをしたいのですが どうすればいいでしょうか?
- 841 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 07:35:55 ]
- >>840
それで正しい宣言になってる(pはchar *の配列)けど、何をしたいんだ?
- 842 名前:840 mailto:sage [2008/02/05(火) 11:02:37 ]
- >>841
ありがとうございます。 windowsプログラミングでエディットボックスの中身を 複数保存できるようにしたかったのでこのようなことが できるかわからなかったので質問させていただきました。
- 843 名前:デフォルトの名無しさん [2008/02/15(金) 17:21:49 ]
- メモリを確保し、
char *buf = (char *)calloc((int)dwSize+1,sizeof(char)); そこに、abcdefという文字列を入れます。 cの部分のみを読み取り、それがcであるか否かの判定をしたいのですが、 どうすれば出来ますでしょうか?
- 844 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:24:34 ]
- if(buf[2] == 'c') ...
こういうこと?
- 845 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:28:45 ]
- for(int i=0; i<=100; i++)
と for(int i=0; i<=100; ++i) の結果が違わないのは何故でしょうか
- 846 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:37:15 ]
- >>845
i++と++iは同じ副作用を持つから。 この二つの式は違う値をもつ(前者ならインクリメント前のもの、後者は後のもの)けど、 for文の三番目の式は、副作用だけ利用されて値は捨てられるから、この違いが現れない
- 847 名前:デフォルトの名無しさん [2008/02/15(金) 18:41:19 ]
- ありがとうございます。
>>843です。 abcdefからbcを見つけ出しeまで抽出したいのですが、 どうすれば出来ますでしょうか?
- 848 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:49:22 ]
- >>847
char * pbc = strstr(buf, "bc"); if (pbc == NULL) ...; // not found. char * pe = strchr(pbc, 'e'); if (pe == NULL) ...; // not found. char newBuf[pe - pbc + 1 + 1]; sprintf(newBuf, "%.*s", pe - pbc + 1, pbc);
- 849 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:11:42 ]
- >>846
なるほど 後者は0に+1されてからiが代入されて 1からループが始まるのかと思ってました ありがとうございました
- 850 名前:デフォルトの名無しさん [2008/02/16(土) 00:29:08 ]
- 本当にありがとうございます。
解決しました。 buf[2]のみをダイアログ上のエディットコントロールに対し、 SendDlgItemMessageを使い書き込みたいのですが 出来ません。 どうすれば出来ますでしょうか?
- 851 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:11:10 ]
- >>850
「ありがとう」と言われても、あんたが何者なのか誰も知らんから誰にも伝わらんぞ。 で、3行目以降についてもいきなり書かれても何のことやら判らん。 状況説明もできないのなら、なにもできるわけないだろ。
- 852 名前:デフォルトの名無しさん [2008/02/16(土) 02:24:07 ]
- 状況説明
SendDlgItemMessageでエディットコントロールにbuf[2]を送ったが エディットコントロールに文字列が追加されない。
- 853 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:16:18 ]
- ・環境は?
・buf[2]ってなに? ・SendDlgItemMessageをどう使って送ったの? ・あんた馬鹿?
- 854 名前:デフォルトの名無しさん [2008/02/16(土) 03:59:08 ]
- >>853
WindowsXP bufについて>>843
- 855 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:30:26 ]
- 実際のコードを貼らない質問者なんてスルーでいいべさ。
- 856 名前:デフォルトの名無しさん [2008/02/16(土) 15:17:30 ]
- わかりました。
簡略化したコード char *buf = (char *)calloc((int)dwSize,sizeof(char)); ↓ ReadFile(hFile,buf,dwSize,&numOFRead,0);//ファイル内容abcde ↓ SendDlgItemMessage(hWndDlg,IDEDIT, EM_REPLACESEL,0,(LPARAM)((LPSTR)buf[2]));
- 857 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:27:01 ]
- >>856
buf[2]は'c'という文字であって"c"という文字列じゃないから、それは動かない まず"c"という文字列を用意して、それを渡す char content[2]; content[0] = buf[2]; content[1] = '\0'; SendDlgItemMessage(hWndDlg, IDEDIT, EM_REPLACESEL, 0, (LPARAM)content);
- 858 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:29:42 ]
- SendDlgItemMessageAを使った方が、って書こうと思ったけど、
comctl32.dllバージョン6だと、それはそれで面倒なことになる気がするから、書かないでおく。
- 859 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:26:08 ]
- 皆様へ
ありがとうございます!!
- 860 名前:デフォルトの名無しさん [2008/02/16(土) 16:31:38 ]
- csvファイルを読み込んで任意の値で描画する方法を教えてください。
CSVは x,y,value\nで数百行。 二次元配列 M[50][50] ///max 二次元配列 M[X][Y] にcsvのxをX,yをYでセット 二次元配列 M[x][y] にvalueを代入 ※x,yはint valueはstr6バイト forループでM[X][Y]を0,0から49,49までvalueを表示させる。 ※空値の場合はカンマをセット イメージ aaaba,,,bbbb,,,,,,,,,asdass,,,,・・・ cccdse,,,,,,,,,,,,,,,,,,,,,,,,,,,bnvmde,,・・・ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,bredkgalkser,・・・ ,・・・ @ファイル読み込み Ax,y,valueセット B描画 ↑ Bの描画でvalueがAで最後にセットされた値しか出てきません。 どなたか教えてください。
- 861 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:36:29 ]
- >>860
丸投げしたいなら宿題スレへ、ヒントが欲しいなら質問箇所を絞って、エスパー希望なら鼬害。 >860=>859なら死ね。
- 862 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 22:35:00 ]
- >>861
死ねよ低モラル野郎
- 863 名前:デフォルトの名無しさん [2008/02/22(金) 22:31:23 ]
- C99のinlineがc++のinlineと違うのでむかついた
- 864 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:46:04 ]
- >>863
どこがどう違うの?
- 865 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:59:46 ]
- int array[3] = { 0, 1, 2 };
この配列の array[3]の中身がNULLというのは保証されていますか? 違いましたらforeachって、どういう中身になっているのか教えてください
- 866 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:15:10 ]
- array[3]は存在しません
アドレスは取れますが、参照しようとしたり代入しようとすると未定義動作 foreachって何の言語よ?
- 867 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:18:25 ]
- 何の言語でも、array[3]へのアクセスができない言語なら
配列の要素数が3であるということを把握してループしているだろうということは容易に想像できる。
- 868 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:23:44 ]
- C#じゃねーの?
- 869 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:33:19 ]
- >>865
C#なら配列の長さを調べることができるから for (int i = 0; i < array.Length; i++) { 〜 } ってやればいいんじゃね
- 870 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:07:04 ]
- そもそもarray[3]はポインタじゃないのに何でNULLになるんだよ…
- 871 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:10:44 ]
- たぶんあちこちでNULL文字とかNULL終端といった言葉が使われてるせいかと
- 872 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:55:05 ]
- 糞入門書の弊害か…
ASCIIの0の略語はNULLじゃなくてNULだな。 ja.wikipedia.org/wiki/ASCII#ASCII.E5.88.B6.E5.BE.A1.E6.96.87.E5.AD.97 混乱起こすから「ヌル文字」とか区別して書くべき。
- 873 名前:865 mailto:sage [2008/02/23(土) 16:21:31 ]
- >>867
3個である事を前提にループさせるんですね 発想が悪かったみたいです。。。 終端ばっかり調べようとしてました 配列のサイズ取得して割ったら出来ました ありがとうございます
- 874 名前:デフォルトの名無しさん [2008/03/06(木) 22:24:02 ]
- サイトからダウンロードしたMicrosoft Windows SDKのIMGファイルが1.32GBもあって大きすぎてCDに入らないんですけどどうやってインストールするんですか??
- 875 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:26:53 ]
- 300行で1つの関数と、それと同等の処理を30行の関数が100個で構成するのとでは何が違うのでしょうか?
スタックがどうのこうのとブツブツ上司が呟いたのだが、なにが問題なのでしょうか
- 876 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:48:44 ]
- >>874
Daemon ToolsでマウントするとかDVDに焼くとか。
- 877 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:52:01 ]
- >>874
CDじゃなくてDVD用でしょそれ
- 878 名前:300 * 1 < 30 * 100 mailto:sage [2008/03/07(金) 01:04:42 ]
- >>875
プログラムの規模が違う。
- 879 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:49:11 ]
- その関数が呼び出されてスタックに詰まれる量が違う
300行分のコードが詰まれるのと 30行分のコードが詰まれるかの違い けど、其れだけでブツブツ言うとも考えにくいので 他の問題があったのではと予想 明日聞くんだな
- 880 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:48:30 ]
- >300行分のコードが詰まれるのと
>30行分のコードが詰まれるかの違い はぁ? コードが詰まれる? どこの実装ですか? おたくさまの脳内?
- 881 名前:デフォルトの名無しさん [2008/03/08(土) 20:35:29 ]
- int *ptr;
int array[10]; for(ptr=array; ptr<array+10; ptr++) { *ptr = 0; } array+10は何を表しているのですか?
- 882 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:39:22 ]
- arrayの終端。
- 883 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:23:37 ]
- >>880
そんな質問の仕方じゃ答えてあげないよ とりあえず関数作って自動変数のメモリを表示させて確認する作業に戻るんだ
- 884 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:39:23 ]
- そりゃ自動変数は積まれるだろうよ
コードが積まれるってのは訳分からん
- 885 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:11:31 ]
- なんだ、>879の阿呆は未だ自分の間違いに気付いていなかったのか。
とっくに尻尾を丸めて引き篭もっているのかと思った。
- 886 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:15:35 ]
- コードを詰む=スタックに実行アドレス(IP)を詰む
という意味なら通じるが、普通コードを詰むとは表現しないな
- 887 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:28:02 ]
- >>886
詰むなよ。ゲームオーバーじゃねぇか。
- 888 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:58:55 ]
- んあ?
よくわからない コードをじゃなくて 「実行アドレスを積む」なら俺リアルで恥かかない・・・? コードって全体をさしてるものと思ってたんだけど。 処理のみの部分をいうのかな
- 889 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:26:33 ]
- 実際に実行命令をスタックに積んでるわけじゃないから
- 890 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:05:39 ]
- ほんとはよく知らないんですよ
誰も質問答えないのに見かねてしまった ごめんね、適当答えて。 まとめると 関数に入ったら 変数はスタックに詰まれる 処理はスタックに詰まれない てことですね ( 信じるかどうかは貴方次第! 掘り返し875の違いを、ソースを見ずに言える事は、 やはり上司に聞けとしか、言えないですね
- 891 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:08:55 ]
- >>890
>878は読めないんですか? 特に名前の辺りは。
- 892 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:13:17 ]
- 例えばgooなどでああいう回答してもポイント貰えませんよ
自分はそんな目的ではありませんけども
- 893 名前:デフォルトの名無しさん [2008/03/12(水) 08:20:49 ]
-
- 894 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:22:47 ]
- でもコード量が十倍も違うなら、それが一番重要な差異だろ
- 895 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 08:59:59 ]
- >>893
可能です。 以上。 ↓次どうぞ
- 896 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:20:29 ]
- VC++.NET の質問良いでしょうか?
1.UAC ダイアログを「インストール」ボタン押下時にのみ出したい 1つの EXE でWindowsサービスのインストール、アンインストール、 Windowsサービスの実行の機能を入れたんですが、 VISTA のユーザーアカウント制御機能(UAC)のせいで、 「管理者で実行」でプログラムを立ち上げないと上手く動きません。 フォームの「インストール」ボタンをクリックした時だけ ユーザーアカウント制御のダイアログを出すように出来ませんか? 常時Admin権限で動作ってのも都合悪いのですが・・・ ユーザーに Admin 権限を持つのユーザー名、パスワードを入れて下さい、 なんて画面を作った所で「???」だろうし ( VISTA インストール時に Admin パスワード入力しませんものねぇ。) 2.Windows サービスの設定ファイル、XXX.ini ってどこに置けばいいんですか? VISTA だと users 以下に入っちゃう空気ですが、exe と 同じ位置だとNG? PC汚染を覚悟の上で windows 以下に入れるのが良い?? 教えて君ですがよろしくお願いします。 UAC の情報ねーんですよぉぉぉ!!(絶叫
- 897 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:40:07 ]
- >>896
1 任意のタイミングで昇格は不可能ではないが、面倒そうなんで、 管理者権限が必要な部分だけ別プロセスにすることを勧める。 2 複数ユーザが同時ログオンしたら破綻するという点で、 Windowsフォルダもアウト、常考。
- 898 名前:デフォルトの名無しさん [2008/06/15(日) 12:50:03 ]
- スタックに関してよくみかける記述について1つ疑問。
1)スタックはLIFO(Last In First Out)方式であり 後に入れたデータから先に読みだされる 2)関数の引数及びローカル変数はスタックに積まれる さて、問題。 int add(int a, int b) { int c; c = b; c = a+c; return c; } という関数があった場合、スタックにはこのように データが積まれると考えられる。 変数 c (ローカル変数) 変数 a 変数 b (最後の引数から積まれる) (スタック領域の先頭アドレス) 1)に従えば、データはc->a->bの順番でしか取り出せない はずだが、プログラムでは明らかにaより先にbの値を参照 して値を読みだしている。これはスタックのルールに 反するのではないか? あなたはこの疑問を明確に説明できますか?
- 899 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:33:21 ]
- >>898
int add(int a,int b); では、内部的に struct { int a,b; int c;//ローカル変数用 }add_param; を積んでるんだと考える。 スタックに一度に積めるデータの単位は別に固定じゃない スタックは抽象概念だからね。
- 900 名前:898 mailto:sage [2008/06/15(日) 13:52:30 ]
- 899さんの考えではint型変数a,b,cを含んだ構造体を一度に
PUSHしたから、取り出すのも同時にPOPできる・・・だから 変数を使用する順番は関係ないのだ、とこういう理屈でしょうか? そうだとしたら何かおかしくありませんか? ヒントですが898の日本語の文章はわざと誤解を生じるような 表現が使われています。スタックの本質は、PUSHにしろPOPに しろ、それは必ずスタックポインタの遷移を伴う操作でなければ ならないということです。POPするということはスタックから データを取り除く、つまり”そのデータはもう使わないよ” という意味ですよね? さて、898で私が書いた"値を参照" する行為は果たしてPOPでしょうか? ここをじっくり考えると何が問題だったか見えてくると 思いますよ。
- 901 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:04:38 ]
- 何かおかしくありませんか?と書いてどこがおかしいのか指摘しないのはどうよwww
ともあれ、関数呼びだしに使われるスタックとデータ構造の議論でいうスタックは似ているが別のものってことで
- 902 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:06:55 ]
- 寧ろ、struct {int a, b;}をスタックから取り出していると捉えてもいいかもしれない。
その後の仮引き数やローカル変数がスタックに積まれるかどうかは実装依存だし。
|

|