- 1 名前:デフォルトの名無しさん [2006/08/22(火) 09:21:31 ]
- はきだめのスレへようこそ
ここは、C/C++に挫折し、それにもかかわらず、C/C++やらなければならない者達がたむろするスレです。 なお、質問する人は回答はあまり期待しないでください。 前スレ:はきだめC/C++下級者の質問箱 pc8.2ch.net/test/read.cgi/tech/1124256027/
- 696 名前:デフォルトの名無しさん [2008/04/22(火) 18:16:54 ]
- 以下を実行して
a:0x8049e80 0x8049e80 0x8049e80 A:0x8049e80 0x8049e80 0x8049e80 11 12 13 4 5 6 0 0 0 のようになることを期待していますが11 12 13が1 2 3のままです。どのようにしたらよいか教えていただけると幸いです。 struct data{ double x[3],p[3],q,rm; }; class Func{ public: void func1(struct data []); }; class SubFunc{ public: void subfunc1(struct data []); }; 続く
- 697 名前:デフォルトの名無しさん [2008/04/22(火) 18:17:29 ]
- 続きです
int main(void) { static data P[3]; Func FC; FC.func1(P); for(int i=0;i<3;i++){ cout << P[i].x[0] <<" "<< P[i].x[1] <<" "<< P[i].x[2] << endl; } return 0; } void Func::func1(struct data A[]){ SubFunc SFC; SFC.subfunc1(A); A[0].x[0]=1.0; A[0].x[1]=2.0; A[0].x[2]=3.0; cout <<"A:"<< &A[0].x[0] <<" "<< &A[0].x[0] <<" "<< &A[0].x[0] << endl; } void SubFunc::subfunc1(struct data a[]){ a[0].x[0]=11.0; a[0].x[1]=12.0; a[0].x[2]=13.0; cout <<"a:"<< &a[0].x[0] <<" "<< &a[0].x[0] <<" "<< &a[0].x[0] << endl; a[1].x[0]=4.0; a[1].x[1]=5.0; a[1].x[2]=6.0; }
- 698 名前:デフォルトの名無しさん [2008/04/22(火) 18:27:36 ]
- char a[] = "100";
って書くと これどういう意味になるの?
- 699 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:29:01 ]
- >>698
a[0]='1' a[1]='0' a[2]='0' a[3]='\0'
- 700 名前:デフォルトの名無しさん [2008/04/22(火) 18:34:43 ]
- >>699
さんきゅ!
- 701 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:36:19 ]
- >>696
SFC.subfunc1(A); A[0].x[0]=1.0; A[0].x[1]=2.0; A[0].x[2]=3.0; SFC.subfunc1()呼んで11 12 13入れても、その後上書きしてるじゃん
- 702 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:55:07 ]
- >>701
おっしゃるとおりです。ありがとうございました。
- 703 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:03:54 ]
- コンパイラとリンカのバージョンってどうやって調べるか分かりますか?
ちなみに、使っている環境(って言うのかな?)はCPad for Borland C++Compilerってやつです あんまり難しい専門用語は分からないんで、初級者でもわかるように教えてくれるとうれしいです
- 704 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:07:11 ]
- 無料版の BCC のバージョンは 5.5 しか存在しない。
- 705 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:34:27 ]
- >>704
それはリンカのこと?それともコンパイラのことですか? 超下級者だから全然わからん
- 706 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:35:44 ]
- ちっとも保守される様子がないbccなんかそろそろやめて
mingwやvcのexpress editionにすればいいのに。
- 707 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:39:43 ]
- -v
- 708 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 02:19:31 ]
- >>704
修正版の5.5.1がある。
- 709 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 10:33:03 ]
- >>694-695
整数は割っても少数にならないし、小数は扱いにくいから ↓のを繰り返す。 x % 2 //2進数の一桁目がこれででる。 x /= 2 //一桁目を取り出したらずらす。
- 710 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 10:47:35 ]
- x & 1
x =>> 1
- 711 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 15:42:59 ]
- 1, 2, 4, 8, 16, 32, ... とビット数の数だけ論理和とればいいだけじゃん
- 712 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 15:57:14 ]
-
ごめん。 >>709はマイナスのとき使えな・・くもないか。
- 713 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:56:29 ]
- まず10進数の定義からだな。
- 714 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:44:04 ]
- 定義厨もここまできたか
- 715 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:16:09 ]
- パックドBCDかもしれんし、ASCZかもしれん。
- 716 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:33:03 ]
- #include <stdio.h>
struct histgram{ int x; int y[100]; }; void one(struct histgram *hist); void two(struct histgram *hist); int main (void){ struct histgram hist[1] ; int z; hist->x = 0; for(z=0;z<100;z++){ hist->y[z]=0; } printf("before***%d***%d***%d***",hist->x,hist->y[0],hist->y[50]); one(hist); printf("before***%s***%s***%s***",hist->x,hist->y[0],hist->y[50]); for(z=0;z<9999999999;z++); return 0; } void one(struct histgram *hist) { two(hist); } void two(struct histgram *hist) { int z; hist->x = 1; for(z=0;z<100;z++){ hist->y[z]=1;}} これで実行するとメモリのエラーが出るんですが、どうすれば解決するでしょうか
- 717 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:50:14 ]
- >>716
2つめのprintfは、%sじゃなくて%dを使うべし。
- 718 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:50:09 ]
- ×for(z=0;z<9999999999;z++);
○getchar();
- 719 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 06:03:23 ]
- それ以前に hist->x は hist[0].x じゃないのか?
- 720 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 06:44:04 ]
- どっちでもいいんじゃね?
- 721 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 01:10:46 ]
- ボーランドでコンパイルしたのですが、
E2293 linearEq5.c 4:)が必要 って出ます。 #include<stdio.h> #include<math.h> #define MAX_DATA 1000//データ点まで想定 void read_data(double x[],double y[],int &order ,int &data_number)// データファイルの読み込み { FILE* ifp; char ifile[20]; printf("Input the file name of input data:"); scanf("%s",ifile); printf("何次近似にしますか?:"); fscanf(ifp,"%d",&order); printf("Input a data number:"); fscanf(ifp,"%d",&data_number); if((ifp=fopen(ifile,"rt"))==NULL){ fprintf("Can't open input file \"%s\"\n",ifile); } 途中までです。 一様、visualではこのエラー表示は出ません。 どうしたらいいか教えてください。
- 722 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 01:22:34 ]
- >>721
Cには参照はありません。visualとやらでエラーが出なかったとすれば、C++としてコンパイルしたのでしょう。
- 723 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 03:47:57 ]
- >>722
参照って何ですか?
- 724 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 09:34:34 ]
- >>723
int &
- 725 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:32:59 ]
- >>724
ありがとうございます
- 726 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 15:59:47 ]
- ”プロセスにマッピングされている”というのは具体的には
ヘッダのインポートセクションとかにアドレスが格納されている、という意味ですか?
- 727 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 16:06:35 ]
- いいえ。
- 728 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:09:06 ]
- ではどういう意味ですか?
- 729 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:17:01 ]
- そのキーワードで検索すれば判る通り、状況によって意味することが違うので単純には答えられません。
- 730 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 01:25:27 ]
- >>726
タグ打ってくれなきゃ元レスがわかんね
- 731 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:15:18 ]
- c/c++ランタイムってもしかして
c/c++じゃなくてもプロセス起動時にロードされてる?
- 732 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 10:18:50 ]
- そのプロセスのコードの一部がC/C++で書かれてるならロードされる場合もある。
.dllや.soなら他のプロセスが呼び出してるかもしれん。
- 733 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:26:56 ]
- 環境:vc2007
言語:c++ argcに間違ったパスを入れてしまいました。 そのあと何度動かしても、動かした瞬間にargcに間違ったパスが入り プログラム'******'を開始できません。指定したファイルがみつかりません というエラーが出ます。 どうやったら、このエラーは出なくなるでしょうか
- 734 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:13:51 ]
- >>733
argcはコマンドライン引数の数。パスなど入らない。 プロジェクトのプロパティのデバッグの動作のコマンドに間違ったものが入ってるとそうなる。
- 735 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:53:16 ]
- >>733
argv にも入れてみるとか……
- 736 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:33:05 ]
- >>733
プロジェクトのデバッグのタブの引数の項と間違えて、実行するプログラムのパスを書き換えたんじゃないのか?とか言ってみる。
- 737 名前:733 mailto:sage [2008/05/25(日) 11:26:10 ]
- 解決しました。ありがとうございます。
- 738 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:04:50 ]
- Visual Studio 2008 Express で VC++の勉強をはじめたばかりの超初心者です。
gcnewを用いてインスタンスを生成し、"->"を使用してメンバ関数を呼び出すと、メンバ関数からメンバ変数をアクセスできません。 ご回答のほど、よろしくお願いします。
- 739 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:46:16 ]
- ref class A
- 740 名前:738 mailto:sage [2008/05/25(日) 23:42:33 ]
- >>739
ref にしてるんですが、ref じゃだめってことですか?!
- 741 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:28:28 ]
- C++/CLIではじめるならC++かC#のどちらかで始めたほうが楽じゃないかな。
- 742 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:28:52 ]
- >>738
それだけじゃなんとも答えようがない。ここだとスレ違い気味だし、 コードを付けてこっちで聞きなおしてみたらいい。 C++/CLI part3 pc11.2ch.net/test/read.cgi/tech/1206447234/l50
- 743 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:58:07 ]
- C/C++言語でプログラムを書いたら、
必ずC/C++ランタイムは使われていますか? C/C++以外の言語で、C/C++ランタイムを使用している言語はありますか?
- 744 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:49:30 ]
- まったく使わないこともできるな。
- 745 名前:743 mailto:sage [2008/05/29(木) 20:36:21 ]
- C/C++で書いたプログラムはmain関数の前に
C/C++ランタイムのスタートアップルーチンが呼ばれるそうですが、 まったく使わない事も出来る、とはつまり main関数の前にスタートアップルーチンを呼ばない事が出来るということでしょうか?
- 746 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:47:15 ]
- 空の同名のスタートアップルーチンを自作してリンクすればできるだろ
- 747 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:32:17 ]
- >>745
フリースタンディング環境とか
- 748 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:51:56 ]
- >>745
書ける。組み込みなんか自分で書いたりするゾ
- 749 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:18:16 ]
- ファイルからN(定数)個のスペースで区切られた値を読み込むのに
while(fgets(str,512,fp)){ sscanf(str, "%d %d %d …, %d", &input[0][ct], &input[1][ct], &input[2][ct], …, &input[N][ct]); ct++; } とやっているのですが、Nを変数にしたい場合、どういう風にすればいいんでしょうか?
- 750 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 14:46:39 ]
- >>749
C++ なら問題ない。
- 751 名前:デフォルトの名無しさん [2008/06/06(金) 01:24:08 ]
- 難しいね、C++って、、、、
- 752 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:22:05 ]
- vector t;
をモジュールに引数として渡す方法を教えてください。もう3年も悩んでます。
- 753 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:57:23 ]
- >>749
C++ならvectorでできる。C99なら可変長配列でそのままできる。C89だとmalloc()で確保するしかない。 入力自体は、いずれにしてもループで回すしかない。
- 754 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:58:00 ]
- >>752
何をしたくて、3年間も何を無駄に調べたのか教えてください。
- 755 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:22:29 ]
- >>752
多分調べればわかると思う。
- 756 名前:デフォルトの名無しさん [2008/06/07(土) 23:03:18 ]
- なんで .cpp と .h に分けるの?
h に全部書いちゃいけないの? (javaって1ファイルだよね?)
- 757 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:08:17 ]
- コンパイル激遅でいいならやればw
- 758 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:23:32 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6829.txt
データ対の大小比較を行った回数を計算し出力するプログラムなのですが while(1){ count++ while(d[++i]<key) count++; count++ while(d[--j]>key count++; この部分は これで合ってるのでしょうか?
- 759 名前:デフォルトの名無しさん [2008/06/08(日) 00:35:08 ]
- >>757
遅くなるの? それは知らなかった。 Boostってhppだよね? あれ、遅いのに採用してるの?
- 760 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:38:27 ]
- >>759
インクルードってどういうものか分かってる? ファイルの中身を合成するものなんだよ? 全てのコードをヘッダファイルに書いて main のある .cpp でそれを全部インクルードしたとすると、 それら全てのファイルの中身を合成したファイルを 毎回コンパイルすることになるんだぜ。 そのファイルの中の1カ所を変更しただけでな。
- 761 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:40:13 ]
- >>759
boost 全部を一気に使う訳じゃないだろ。 まあ、boost 使うとそれなりにコンパイル遅くなるけど。 そのためのプリコンパイル済みヘッダファイルだな。
- 762 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:42:53 ]
- >>760
ただの宣言をするものと思ってた。 >>761 確かに、一気には使わないね。 ありがとう。
- 763 名前:デフォルトの名無しさん [2008/06/08(日) 00:44:28 ]
- 質問です。
if(整数型) ってやったときに 数字が0だと偽、符号が正だと真と聞いたのですが ゼロ以下だとどっちになりますか?
- 764 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:45:25 ]
- >>759
Boostの場合はテンプレート使っていてヘッダに書かざるを得ないという事情がある。 もちろん、ライブラリのリンクという面倒事を回避できるという点も影響を及ぼしているとは思う。 要LIBのものでも必要最低限しかLIBに入れていない。
- 765 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 01:02:37 ]
- >>763
その説明はおかしい 0が偽で0以外が真 っていうかif(-1)とでもやって試せばどうかね
- 766 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 01:54:36 ]
- 自分で試してあやふやな結果を得るくらいならここで質問して確実な回答を求めます。
- 767 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 02:02:47 ]
- 規格票をおよみください
- 768 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 02:06:57 ]
- 規格以前の問題。
まともな C++ の本読め。
- 769 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 06:58:45 ]
- まともなC++の本かどうかを判断するには知識が・・・
- 770 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:51:07 ]
- 卵が先か鶏が先か。
- 771 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:57:06 ]
- 代理出産だー
- 772 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 11:56:17 ]
-
本ならここで聞け ttp://pc11.2ch.net/test/read.cgi/tech/1209441159/
- 773 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:08:28 ]
- ここでの回答なら確実だと思ってるのかな。
- 774 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:09:44 ]
- if(-1) (-1に限らず負の数)くらいを試せないのはちょっとしんどいな。
いくらでも試す方法はあるだろうに・・・
- 775 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:57:06 ]
- C++だと環境に依存するコードが多くてバグるからCで書け
といわれたんですがC++特有で環境に著しく依存する物って何でしょう 仮想関数や継承の挙動が大きく変わるとは考えにくいんですが。
- 776 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 09:40:29 ]
- >>775
言ったやつに聞いてくれよ。
- 777 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:43:49 ]
- >>776
いったやつが理由を知らないんだよ。 知ったかぶりだよ。
- 778 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:31:53 ]
- >>775
例外処理とか、標準ライブラリの実装とか、の話かな? いずれにしても挙動が変わることはさすがにないでしょ。 もちろん規格に沿った範囲内の話で、未定義動作を利用した コードなんかについては知ったこっちゃ無いけど。
- 779 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:07:23 ]
- ども。やはりそんなものですよね…
上司が自信満々に断言するので突込んで聞けなかったんです
- 780 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:17:23 ]
- vector<Hoge>::const_iterator iter = hoge.begin();
(*iter).name で、なんでアスタリスクが必要なの?
- 781 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:41:34 ]
- iter は const_iterator であって Hoge ではないから
iter.name という表記は const_iterator のメンバ name を参照しようとしているのであって、Hoge の name を見ているのではない iter->name ならおk
- 782 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:48:02 ]
- >>781
ポインタと同じように考えればいいのなか?
- 783 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:36:46 ]
- >>782
うん
- 784 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:27:12 ]
- >>783
アリガd
- 785 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:37:41 ]
- イテレータはポインタを模したクラスのことだからな。
- 786 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:20:01 ]
- いい野中
- 787 名前:デフォルトの名無しさん mailto:age [2008/06/09(月) 23:16:16 ]
- 配列の要素に-1を指定した時の挙動について教えてください
char a; char b[10]; と宣言しておいて、b[-1]を指定したら、aを意味していることになりますか?
- 788 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:17:31 ]
- なるはずがありません
- 789 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:17:37 ]
- >>787
なりません。未定義動作になります。
- 790 名前:787 mailto:sage [2008/06/09(月) 23:26:09 ]
- FreeType2という、フォントレンダラのソースを読んでいたら
配列の添字に-1を指定している箇所があり、気になって質問しました このソフトはC言語で書かれています。 やはりこれはイレギュラーな使い方なんですね
- 791 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:36:26 ]
- ほんとに配列として宣言されてた?
mallocで確保したアドレスに+1したものを配列として使ってたりしない?
- 792 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:07:48 ]
- メンバ変数の場合は宣言順にメモリに置かれることが保証されてるので、
あとはアラインメントに関して処理系独自の定義が行われていれば その処理系では保証されるね。
- 793 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:34:15 ]
- >>792
されません。配列の添え字演算(ポインタ演算)で配列の範囲外にアクセスしたら未定義動作です。
- 794 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:43:51 ]
- 未定義動作を発生させるコードについて、ある処理系が特定の挙動を保証することがあっても構わない。
- 795 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:40:52 ]
- [-1]だけではそれが間違ってるとは言い切れない。
char a[10], *p p = a + 1; とすれば p[-1] == a[0] であり、そこにアクセスするのは何の問題もない。
- 796 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:05:10 ]
- enumは変数宣言出来るけど
enum変数自体 int型で特に特別な変数ではないし 他の変数で代用可能だから活用法が思いつかない どういった活用法があるのですか?
|

|