[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/09 03:49 / Filesize : 255 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.72【環境依存OK】



1 名前:デフォルトの名無しさん [2010/03/05(金) 16:51:13 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.71【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1264774545/

【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め)

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。


609 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 12:01:57 ]
*strで出てくるのは'H'だよ

610 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 12:14:23 ]
>>607
そのコードをもっと分かり易く(分かり難く?)書くとこんな感じ

const char hello[] = { 'H', 'e', 'l', 'l', 'o', '\0' };

const char *str = hello;

printf("%s", str);

str は char型の配列の先頭アドレスを保持してるだけ

611 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 12:15:45 ]
つまり最後のstrは配列名ってことですか?
だとしたら先頭の文字が格納されたアドレスが出てくるのではないかと思うのですが…
%sというのはそれを文字に変換する機能があるって事なんでしょうか。

612 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 12:17:42 ]
*strで取り出していくのはprintfの中の仕事だから

613 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 12:18:39 ]
printfの中の人が%sが来たらこの値は文字列の先頭アドレスだなって勝手に解釈して処理を分岐してくれるんだよ


614 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 12:19:58 ]
C言語での文字列ってのはただの配列

関数内部で配列の中身読んでるだけ

615 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 12:21:13 ]
なるほど、ありがとうございます
文字列の時だけはそういうものだと覚えてしまう事にします

616 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 14:25:58 ]
配列とかポインタとかじゃなくて
>%sというのはそれを文字に変換する機能があるって事なんでしょうか。
これが聞きたかっただけじゃないの?

617 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 14:38:05 ]
はっきり言ってイミフだものそれ



618 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 15:32:03 ]
一時的なバッファ領域をローカルに確保するとき(バッファのサイズはコンパイル時にわかっている)
バッファのサイズが大きい場合は静的配列じゃなくて動的配列でとった方がいいのかな?

619 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 15:37:35 ]
場合によるけど静的変数だと複数のスレッドでアクセスしたときに
困るかも

620 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 15:53:46 ]
staticの意味じゃなくてスタックにって意味じゃないかな
スタックあふれないならスタックでいいと思う

621 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:27:41 ]
一時変数かmalloc/newかとも取れる

622 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:20:35 ]
>611
610ではないのだが、

>つまり最後のstrは配列名ってことですか?
違う。strはポインタ。配列名はhello。
ただしstr=hello;
とすることでstrはhelloを指している。

printf("%p, %p\n", str, hello);

とすれば両方とも同じポインタ値(普通はアドレス)だと言うことがわかる。

>%sというのはそれを文字に変換する機能があるって事なんでしょうか。
変換って言うのはまた微妙な表現だね。%sは対応する変数がC文字列を
指している物として、その文字列を表示する。

623 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 21:40:01 ]
void myPrint(const char *str) // char のポインタを受け取るだけ
{
printf("%s", str);
}

int main()
{
myPrint("ABCDE"); // その1:const 文字"列の先頭"の、アドレスを渡している

char foo[] = "XYZ"; // その2:char 配"列の先頭"の、アドレスを渡している
myPrint(foo);

char *bar = foo; // その3:その2の配"列の先頭のアドレス"を、コピーしてから渡している
myPrint(bar);

myPrint(&(*bar)); // その4:意味は無いがその3のポインタが指す先のアドレスを渡している
// ※その4での動きは、 bar はポインタ変数、*bar はポインタ変数が指している何か、
// &(*bar) は、ポインタ変数が指している何かのアドレス=ポインタ変数に格納されているアドレス
return 0;
}

624 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 21:44:56 ]
const文字列を引数に受け取る場合
とりあえずconst string &にしとけって言われたんだけど
ぶっちゃけconst char *の方が実行効率はいいよね?

625 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 21:48:07 ]
静的解析通すためのNULLチェックめんどいです><

626 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:41:51 ]
C言語ですが、
配列の要素数の宣言に変数は使用できませんよね?

gcc(MinGW?)では可能と聞いたのですが、本当ですか?
またそれによって実行ファイルが環境に依存することはありますか?

627 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:46:18 ]
>>626
なんで配列の要素数の"宣言"に"変"数が使えないと思う?




628 名前:626 mailto:sage [2010/05/01(土) 22:55:43 ]
>>627
すみません、わかりません。

perlを少しやっていて
配列の要素数の宣言に変数を使うことが当たり前だと思ったので。

629 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 22:58:06 ]
#include <stdio.h>

double avg(int *pt);

int main(void){
int test[5];
double ans;

printf("5人のテストの点数を入力してください。\n");

for(int i=0; i<5; i++){
scanf("%d", &test[i]);
}
ans = avg(test);
printf("平均点は%lf点です。\n", ans);
return 0;
}


double avg(int *pt){
double sum = 0.0;;

for(int i=0; i<5; i++){
sum += pt[i];
}
return sum/5;
}
平均を出すプログラムなのですがどこが間違ってますか?
平均点が0.0点担ってしまいます

630 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 23:05:14 ]
>>628
静的に確保されるメモリ領域の宣言は、「どのくらいの量を確保するのか」 決まっていないと確保のしようがない。
変数の値は動的に変わるので、そのような動的な線形リストを使いたい場合には、別途 std::vector などに頼るか、
あるいはストレートに malloc などでメモリ領域を確保しないといけない。

Perlなどのより高級言語の世界では、この辺の「メモリ空間の割り当て」などが人間向けに隠されているので
多分使っていても意識はしてなかったと思うけど、C/C++ の世界ではメモリの管理は自分でする。 あるいは、他人がした物を利用する必要がある。
お前さんは今、Perlとかの世界よりも、もっとCPUやメモリに近い所に立っているんだよ。

>>629
× int test[5];
○ double test[5];



631 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 23:07:52 ]
doubleじゃなくてよくね

632 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 23:08:37 ]
>>629
vc2008eeで試したが、ちゃんと平均出たぞ?

633 名前:626 mailto:sage [2010/05/01(土) 23:12:10 ]
>>630
中々C言語は難しいですね。
勉強します。

634 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 23:13:15 ]
C99なら配列の要素数の宣言に変数が使える
それによって実行ファイルが環境に依存することはありえる
まあそんな処理系知らないけど

635 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 23:57:58 ]
>>631
>>632
なぜなんでしょうね…mingwというコンパイラを使ってるんですが、0.000000点と表示されてしまうんです

636 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 00:12:01 ]
すみません、自己解決しました
%llfにしていたのが原因でした

637 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 00:12:24 ]
↑ミス
すみません、自己解決しました
%lfにしていたのが原因でした



638 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 00:15:53 ]
てか書籍のサンプルコードも普通にprintf("%lf", ans);になってるんですが、どっちを信じたらいいんでしょうか?

639 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 00:19:59 ]
>>633
C++なら可変長配列にはvectorを使う。この辺はC++の方が簡単だからC++を勧めるよ。

#include<vector>

void func()
{
int n=10;
std::vector<int> a(n); //intの配列
a[3]=100;
int g=a[7];
}

640 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 00:48:45 ]
>>638
www.kijineko.co.jp/tech/superstitions/printf-format-for-double.html

641 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 01:38:29 ]
www.kouno.jp/home/c_faq/c12.html#9

642 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 07:45:33 ]
コードをLinux(GCC)、Windows(VC++)どちらでも使えるように
ifdefで自動的に切り替えられるようにしたいのですが
GCC、VC++特有のdefineで定義されている定数はありませんか?

643 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 07:52:25 ]
#include <stdio.h>
#include <string.h>

int main(void){

char str0[20];
char str1[20];
char str2[20];

strcpy(str1, "Hello");
strcpy(str2, "Goodday");
strcat(str0, str1);
strcat(str0, str2);

printf("str1の文字は%sです。\n", str1);
printf("str2の文字は%sです。\n", str2);
printf("str0の文字は%sです。\n", str0);
printf("str0の文字数は%dです。\n", strlen(str0));

return 0;
}

なぜかstr0の前に文字化けみたいなのがついて文字数もおかしくなります。
どうすればいいでしょうか?

644 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 07:52:40 ]
msdn.microsoft.com/ja-jp/library/ms253913%28VS.90%29.aspx
www.sra.co.jp/wingnut/gcc/cpp-j.html#Predefined

645 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 07:56:22 ]
>>643
strcpy(str1, "Hello");
strcpy(str2, "Goodday");
str0[0]='\0'; // ← これ
strcat(str0, str1);
strcat(str0, str2);

str0 の領域をゼロレングス文字列にしてから、strcat


646 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:03:17 ]
>>645
ありがとうございます。動きました。

647 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:03:26 ]
>>643
strcatは0を探して、そこから文字列を連結するってのは分かってるよな?
これを実行してみればいい。

#include <stdio.h>
#include <string.h>
int main(void){
  int i;
  char str0[20];
  for (i = 0; i < 20; i++) {
    printf("str0[%d] の中身は %d です。\n", i, str0[i]);
  }
  return 0;
}




648 名前:642 mailto:sage [2010/05/02(日) 08:04:44 ]
>>644
ありがとうございます。

649 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:08:33 ]
ちなみに、>>645 がどういう意味かと言うと、

1.単に char str0[20]; としただけじゃメモリ領域が確保されただけなので、
  そこには既に何かの値が残っているかもしれない
2.printf や strlen など、「ここからここまでを文字列とみなす」 処理は、ASCIIコード 0x00 を終端として見ている
3.1と2から、中身をクリアしていない str0 を渡したらどうなるかは誰にもわからない

なので、先に 0x00 を置いて「空っぽの文字列」を表した。 と、言う事
str0[0]='\0'; とする代わりに strcpy(str0, ""); でもいいよ


650 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:09:13 ]
>>647
\0がなかったのが原因なんですね。

ところでこの滅茶苦茶な値はどっからきたんでしょうか?

651 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:17:13 ]
>>650
>>649 を見ろ。どこから来たんじゃなくて、既にあった何かだよ
メモリは有限なので常に再利用されてるだけ


652 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:19:00 ]
>>651
すみません、すぐ前の書き込みだったので見ずに投稿してしまいました。
ありがとうございました。

653 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:21:44 ]
何を再利用してそうなったのかってのを考えたり調べたりしてみても楽しいかもね
「再利用を繰り返すことで、本来見えない部分を見ようとする」攻撃手法もあるので
それを見越してゼロクリアするようになってる環境もあったりする

654 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:43:21 ]
>623

だいぶ間が開いてるけど指摘がないので。

>char foo[] = "XYZ"; // その2:char 配"列の先頭"の、アドレスを渡している
これ初期化だからアドレスを渡しているわけではない。
char foo[]={'X',Y'',Z'','\0'};
のシンタックスシュガーになっているだけ。


>char *bar = foo; // その3:その2の配"列の先頭のアドレス"を、コピーしてから渡している
これも微妙な表現。日本語で書くと以下のような感じ。
「配列fooの先頭要素をさすポインタを代入」
char *bar = &foo[0];
のシンタックスシュガーになっている。


655 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:52:11 ]
普通の関数はname space/classのどっちに所属させた方がいいんですか?

656 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 11:19:12 ]
>>654
指摘が無いのは、話の流れ上じゃね。論点の違いというか。
・・・ただまぁ、横から見ただけの初心者がそのレスだけみたら誤解するかもしれないから
安価つけて補足や指摘しておくのはいいことだと思うけど

657 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 11:20:27 ]
>>655
"普通の"ってのが何なのか分からないけど
ただの計算関数とかならnamespace
オブジェクトに属するならclass



658 名前:655 mailto:sage [2010/05/02(日) 11:39:41 ]
>>657
わかりました
ありがとうございます

659 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 17:55:38 ]
配列のポインタは、先頭の要素のアドレスが入るんですよね?

char a[2] = "XY";
printf("%p ", a); //アドレスが表示される
printf("%c ", *a); //要素そのものを表示させる時は間接参照演算子をつける

ここまでは理解できるんですが

printf("%c ", *a[0]);

↑では正しくはa[0]と書くそうですが、なぜですか?
今までの流れだと*のついてないa[0]は配列aの先頭要素を表すポインタを表しそうなんですが…
実際には要素を現すみたいです。

660 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 17:59:25 ]
arr[N] == *(arr + N)

661 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:11:26 ]
[]は普通要素への参照を返す
a[0]なら先頭の要素
a[1]なら2番目の要素

662 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:23:56 ]
>659
>配列のポインタは、先頭の要素のアドレスが入るんですよね?

確実に勘違いしているが、どう勘違いしているのかよくわからない。

「配列のポインタ」が何を指しているのかが不明。

1)式の中で配列名のみを書くと、その配列の先頭要素を指すポインタとして評価される。
※例外は&,sizeofのオペランドと、char配列の初期化子として文字列を記述した場合。

2)
char *aStr[10]; // charポインタの配列

3)
char (pArray)[10]; // char配列を指すポインタ

>661
何を言っているかさっぱりわからない。>660をよく読むこと。


663 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:53:21 ]
うかつに参照って言葉を使っちゃ駄目

664 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:00:49 ]
プログラミングの世界だと、参照って言葉ははっきりと定義されて使われるから誤解を招く場合があるもんな

665 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:56:14 ]
関数Aが2つのスレッドから同時に使われている、
関数Aに渡すデータは完全に別物

って場合は、スレッドセーフなの?

666 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:01:17 ]
>>665
いいえ

667 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:05:19 ]
>>665
それに加えて、関数内でstatic変数とかglobal変数とかを使っていないという縛りが入るな。



668 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:27:42 ]
そこからさらにスレッドアンセーフな関数を呼び出さないという縛りもあるな

669 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:41:53 ]
グローバルデータをローカルに移し持たないという縛りもあるな

670 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:40:33 ]
要約すると、マルチスレッドについてちゃんと勉強してから使ってね

671 名前:665 mailto:sage [2010/05/03(月) 11:58:08 ]
>>666-670
thx

672 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:04:33 ]
メンバ変数とローカル変数の区別が付けにくいのですが、
お前らはどうしていますか?

673 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:06:30 ]
class hoge { int m_value; };

class fuga { int value_; };

class piyo { int value; void func(void) { this->value; } };



674 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:09:51 ]
this->厨は滅ぶべき
単純な構造体は除くが

675 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:10:27 ]
>>672
int mVariable; メンバー
int aVariable; 自動変数
int cVariable; 定数
int rVariable; 参照



676 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:12:14 ]
class widget { int value; void method(void) { widget &self = *this; self.value = 1; } };

677 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:16:54 ]
>>975
引数は?
自動変数のconst参照は?
static constメンバは?



678 名前:672 mailto:sage [2010/05/03(月) 13:22:46 ]
大体の人が同じみたいですね
ありがとうございます

679 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 14:24:39 ]
#typpedef longPointerConstInto


680 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 20:24:57 ]
namespace Test
{
class Hoge;
}
ヘッダファイルにこれしか書いていないんですけど、何がしたいんですか?


681 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 20:27:54 ]
pc12.2ch.net/test/read.cgi/tech/1271591488/502-

682 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 20:39:29 ]
コンパイラにこんなヤツがいるよって教えてるだけです

683 名前:680 mailto:sage [2010/05/03(月) 20:56:44 ]
>>682
thx

684 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 09:57:42 ]
ポインタの配列はどうしますか?
思いつく限りで↓

int* pVar[10];
int* pTblVar[10];
int* ppVar[10];
int* pVarTbl[10];
int* TblPVar[10];

685 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 10:08:10 ]
int* vals[10];

686 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 11:37:52 ]
ポインタにpを付けた所で
特別分かりやすくなるわけでもない
そんなの気にして命名しなくてもいいよ

687 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:18:07 ]
pがないと,ドット演算子使うかアロー演算子使うか迷うじゃないですか.



688 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:20:58 ]
地味にそれはある。IDE使ってる身分で言えば迷う事も無いけど、
テキストエディタで作業する時は地味に頼りにする

689 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:23:16 ]
迷わねーよどんだけスコープ広くしてんだよ

690 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:25:48 ]
どんだけ小規模なコード書いてんだよ

691 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:28:04 ]
変数のスコープと規模は関係ねーだろ工夫しろ

692 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:30:50 ]
型名が変数名に含まれていないと型が分からないじゃないですか
とか言ってシステムハンガリアンになりそうだな

693 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:33:40 ]
LPDIRECTX9DEVICE dev;
これってポインタかそうでないか



694 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:35:35 ]
IDirect3DDevice9 * device;

com とか全部に p 付けるのはめんどくさい

695 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:38:29 ]
そんな訳でtypedefして型名に LP と付けました。
名前に書かれてるとわかりやすいですネ

696 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:39:30 ]
nearポインタって組み込みとかだと
現役だったりするの?

697 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:40:19 ]
CComPtr<IDirect3DTexture9> texture;
std::vector<CComPtr<IDirect3DTexture9>> textures;

これをpTexture、pTextureArrayとかにするのは嫌だ



698 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:49:14 ]
おそらくVisualStudioしか使わない人がp付けないんだろうな

イニシャライザリストでもNULLに初期化かどうかで迷うし

699 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:53:19 ]
俺システムハンガリアンじゃないけど、pくらいは付けるわ。
あとは特にprivate空間でとか割りと気楽に付けられる変数名は臨機応変。


700 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:56:40 ]
>>698
emacs使いだけどpなんてつけないな。
ポインタかどうかに限らず、初期化リストで値突っ込むときは型見るだろ。

701 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:57:01 ]
GCCで書いててもpは付けねーわ。

702 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:58:45 ]
gccにエディタなんてあるの?

703 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:01:32 ]
標準入力からソース打ち込んでるんだろ

704 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:05:08 ]
strcpyを使って配列を初期化するコードはあんまりよろしくないんですか?

705 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:08:01 ]
intの配列とかだとよろしくないだろうな、とか言って


706 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:12:40 ]
もちろん文字列ですよ^^

707 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:44:12 ]
>>704 なぜよろしくないと思った(あるいは見た、聞いた?)のか?



708 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:12:22 ]
VC2005以降は警告出るしな
出力先の配列サイズをチェックしない関数で危険だから
safe関数使えって

709 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:17:15 ]
>>688>>690
引数、ローカル変数、メンバ変数くらいしか確認する必要ないし
普通初めて使う変数の型くらい確認するだろ

>>693>>694
ATL使えでFA
スマポなしでプログラムしてるのが悪い

>>698
初期化リストに突っ込むときは基本的に変数を作る時だから
自分で型分かってるだろ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef