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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/11/03(土) 00:20:13
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.43【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1190860744/l50
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0655デフォルトの名無しさん2007/12/01(土) 12:54:07
>>654
文字列を充分理解してない
char a[3];
a[0] = 'A';
a[1] = i + '0';
a[2] = '\0';
0656デフォルトの名無しさん2007/12/01(土) 12:56:40
>>655
なるほど
a[1]で、i+'0'としてるのはなぜですか?
0657デフォルトの名無しさん2007/12/01(土) 13:01:23
>>656は、>>652からアンカーをさかのぼっていっても良いし、
もしくは、ヌルターミネーターで調べても良い。
0658デフォルトの名無しさん2007/12/01(土) 13:02:48
ああ、すまん。そっちか。

この場合は、>>652を参照なのは確かだが、ヌルターミネータは関係なかった。
0659デフォルトの名無しさん2007/12/01(土) 13:13:15
>>656
文字コード表では文字0〜9の文字コードは連続してる。
'0'は整数0x30
'1'は整数0x31
'2'は整数0x32
・
・
・
'9'は整数0x39
0660デフォルトの名無しさん2007/12/01(土) 13:14:25
>>659
なぜプラスしないといけないんでしょうか?
0661デフォルトの名無しさん2007/12/01(土) 13:18:28
>>655
一般的にchar型に入れる文字コード上で、
数字を表す文字'0'〜'9'は連続した数値で表される
'0' = 48
'1' = 49
'2' = 50
(以下略)
だから、iが10進で一桁であれば、'0'+iで該当の文字コード(数値)が得られる
○ i=2の時に、2を'2'に変換
'0'+i = 48+2 = 50 = '2'

iが0〜9で無い場合(10以上とか負数とか)であれば
charの配列とitoaやsprintf辺りを使う。

char str[256];/* 全体で255文字まで保存出来る領域) */
char *ch;
int i;

ch = "hoge";

sprintf(str, "%s%d", ch, i);

「char str[256]」と「char *ch」の違いについては、また別途調べてみ。
0662デフォルトの名無しさん2007/12/01(土) 13:23:50
>>661
分かりました。ありがとうございました。
0663デフォルトの名無しさん2007/12/01(土) 14:25:24
例えば、1分経つと数字が一つずつ増え(1,2.3・・・) それを1時間ごとにその時間の数字の平均値を
for文のループを使って計算させるには、どういう風に
書けばいいんだろう? もし、書けるとしたらこれは無限ループってことになるよね?

俺のイメージだとfor(i=0; i>=0; i++)
{平均値を求めよ}
0664デフォルトの名無しさん2007/12/01(土) 14:32:18
>>663
よく意味がわからないが最初は1個の数字、1分後には2個の数字さらに1分後は3個の数字
ってなるなら無限ループにならないでその数字の数のMAXとればいいだけじゃね?
0665デフォルトの名無しさん2007/12/01(土) 15:09:01
>>661
iが10以上の時もできるようにしたんですが、
一番最後のiの時だけおかしいです。
06666652007/12/01(土) 15:16:27
できました。すいません!
0667デフォルトの名無しさん2007/12/01(土) 15:35:24
詰まらん質問ですが

void Func()
{
 return;
}

void Func()
{

}

この二つの関数の実行速度は同じですか?
0668デフォルトの名無しさん2007/12/01(土) 15:41:39
>>667
うん
0669デフォルトの名無しさん2007/12/01(土) 15:44:02
a=0;
LABEL:
if(a>10000)goto END;
a++;
goto LABEL:
END:

for(a=0;a<=10000;a++);

の速度は同じですか?
0670デフォルトの名無しさん2007/12/01(土) 15:51:53
最適化によってループが消えるかもしれないから何ともいえない
0671デフォルトの名無しさん2007/12/01(土) 15:57:11
a=0;x=0;
LABEL:
if(a>10000)goto END;
a++;x+=3:
goto LABEL:
END:
printf("%d",x);

x=0;for(a=0;a<=10000;a++);x+=3;printf("%d",x);

はどうですか
0672デフォルトの名無しさん2007/12/01(土) 15:57:52
コンパイラにとっては素直な書き方をした方が最適化しやすいと言われている
0673デフォルトの名無しさん2007/12/01(土) 16:00:01
>>671
それは後者の方が速いと思う
なぜなら前者はループの中でx+=3してるが後者はループの中が空っぽ
0674デフォルトの名無しさん2007/12/01(土) 16:03:09
x=0;for(a=0;a<=10000;a++)x+=3;printf("%d",x);はどうなりますか
0675デフォルトの名無しさん2007/12/01(土) 16:07:30
知らん
実際にやって測ってみろ
0676デフォルトの名無しさん2007/12/01(土) 16:09:42
他人様の手を煩わす前にやるべき事があるんじゃないのかと。
0677デフォルトの名無しさん2007/12/01(土) 16:11:07
>>674
頭にウンコがのってるよ
0678デフォルトの名無しさん2007/12/01(土) 16:18:40
>>663 です 言葉足りなくてすいません。
例えば、1分ずつ時間が経つと数字も1増えるとしたら、
   最初の1時間は  1〜60と数字が増えていきます。
これを時間ごと平均値を出すように命令したいので、60で割った計算をさせる

2時間目は数字は61〜120までなので、これらをすべて足して60で割る計算を
させる。

こんな感じの命令文作るとしたら、どんな文を作ったらよいか思ったのです。
で、もし、作ることができるなら、何時間後までやって下さいという命令文で
なければ、無限ループになるのではと思ったのです。
0679デフォルトの名無しさん2007/12/01(土) 16:21:41
>>674
うちのコンパイラが生成したコードを見てみると
movl    $LC0, (%esp)
movl    $30003, %edx
movl    %edx, 4(%esp)
call    _printf
計算済みの答え30003が即値で渡されている
0680デフォルトの名無しさん2007/12/01(土) 16:25:11
>>678
time関数で現在時刻を取得できるから、それを見て判断すればいいんじゃないか
0681デフォルトの名無しさん2007/12/01(土) 16:32:35
ありがとうございます。
タイム関数というのまだ使ったことないのですが、どのような命令文
を作成して、1〜60を自動的に計算させることができるのでしょうか?
0682デフォルトの名無しさん2007/12/01(土) 16:37:31
要求が曖昧なので具体的には書けないな。
1分に1回だけ1個ずつ出すの?
1分間のあいだ同じ数字をずーっと何個も出し続けるの?
0683デフォルトの名無しさん2007/12/01(土) 16:39:51
ところで命令文って言い方に違和感を感じているんだが、スレ間違ってないよな?
0684デフォルトの名無しさん2007/12/01(土) 16:43:45
1分目 1
2分目 2
・
・
45分目 45

というふうに1分経つと、数字の方も1ずつ多くカウントされて
数字の方は1〜60をどんどん足し算して、
1時間ずつ経ったらら、その合計値を60で割って、平均値を出すということです

わかりづらい質問してすいません。よろしくお願いします
0685デフォルトの名無しさん2007/12/01(土) 16:46:05
スレ間違いしてないですよ。C言語の勉強始めたばかりで、for文の
ことを考えていたのです。プログラム自体も初心者なので、専門用語
もよくわかりませんので、妥当そうな言葉使ってすいません

0686デフォルトの名無しさん2007/12/01(土) 16:56:02
>>684
こんな感じかね
#include <stdio.h>
#include <time.h>
int main()
{
 int i = 0, j = 0;
 time_t t = time(NULL);
 for (;;) {
  i++;
  while (difftime(time(NULL), t) < i * 60);
  printf("%d分目 %d\n", i, i);
  j += i;
  if (i % 60 == 0) {
   printf("1時間経った 平均%d\n", (j / 60));
   j = 0;
  }
 }
}
0687デフォルトの名無しさん2007/12/01(土) 17:06:55
おぉありがとうございます。まだプログラム慣れしてないので、複雑そうに
見えるが、頭で思っていたよりいろんな関数が必要なんですね。
whileが必要とは以外でした。for文ですべてできるかと思いました・・・
熟読してみます。
0688デフォルトの名無しさん2007/12/01(土) 17:08:04
C言語で使われてる関数を一覧できるサイトありますか?
0689デフォルトの名無しさん2007/12/01(土) 17:09:35
標準関数ならあるよ
0690デフォルトの名無しさん2007/12/01(土) 17:10:09
>>687
いやforとwhileは可換だからどっち使ってもいいんだけどね
書きやすいとか読みにくいとかその程度の問題だし
0691デフォルトの名無しさん2007/12/01(土) 17:30:57
標準関数で良いのでサイトを教えて頂けないでしょうか?
0692デフォルトの名無しさん2007/12/01(土) 17:34:13
>>691
unkoがのってるよ
0693デフォルトの名無しさん2007/12/01(土) 17:45:59
ttp://en.wikipedia.org/wiki/List_of_C_functions

とかでいいのかしらん。
0694デフォルトの名無しさん2007/12/01(土) 19:12:41
C言語で型の前方参照ってどうやればいいでしょうか?
やりたいことは

typedef struct{
Fuga f;
}Hoge;
typedef struct{
Hoge h;
}Fuga;
ということがしたいのですが2行目で怒られます…よろしくお願いします
0695デフォルトの名無しさん2007/12/01(土) 19:17:21
Fuga f;
f.h.f.h.f.h.f.h.......?
そんな無限ループみたいな構造体は作れません。
06966942007/12/01(土) 19:45:02
うっ、そうなんですか。
C++ではできるのですがCではできないということですか?
2つのオブジェクト(データ)がお互いを指しているような構造は
Cでは実現できないのでしょうか?
0697デフォルトの名無しさん2007/12/01(土) 19:55:04
ポインタ使えば?
06986942007/12/01(土) 19:58:49
ポインタでも結局怒られませんか?

typedef struct{
Fuga* f;
}Hoge;
typedef struct{
Hoge* h;
}Fuga;
0699デフォルトの名無しさん2007/12/01(土) 19:59:04
>>694 は、指してるんじゃなくて含んでるんだよ
指すんなら出来る

typedef struct Fuga Fuga; 
typedef struct Hoge Hoge;
struct Hoge{ 
    Fuga *f;
}; 
struct Fuga{ 
    Hoge *h;
};
0700デフォルトの名無しさん2007/12/01(土) 20:07:33
>>696
> C++ではできるのですが
うそつくなヴォケ
07016942007/12/01(土) 20:11:01
>>695 697 699
ありがとうございました。
私の初めの例が変でした。すみません。
699がまさにやりたかったことでした。重ね重ねありがとうございます。
07026942007/12/01(土) 20:21:12
>>700
すみません
class Hoge;
class Fuga{
Hoge* h;
};
class Hoge{
Fuga* f;
};
ならできますよね?ということが言いたかったんです(ポインタなんですが)
つまり初めの例が変だったんです。
初心者歓迎ということで許してね♪
0703デフォルトの名無しさん2007/12/01(土) 21:00:14
すまんが初心者以前は・・・いやなんでもない
0704デフォルトの名無しさん2007/12/01(土) 22:50:15
> 初心者歓迎ということで許してね♪
なかなか面白いこと吐くじゃねーか
0705デフォルトの名無しさん2007/12/01(土) 23:19:39
どこが笑いどころ?
0706デフォルトの名無しさん2007/12/01(土) 23:25:48
> な
>  ま
>    者
0707デフォルトの名無しさん2007/12/01(土) 23:36:33
現在時刻を表示させるにはどうしたら良い?
0708デフォルトの名無しさん2007/12/01(土) 23:47:23
>>707
#include <stdio.h>
#include <time.h>
int main()
{
time_t t = time(NULL);
struct tm *tm = gmtime(&t);
printf("%s",asctime(tm));
return 0;
}
0709デフォルトの名無しさん2007/12/02(日) 00:26:35
VS2005です
int ymd = 20071201;
int y, m, d;
y = 2007
m = 12
d = 1
のように年月日をそれぞれy m dに取得するいい方法はないですか?
0710デフォルトの名無しさん2007/12/02(日) 00:45:30
y = ymd / 10000;
m = ymd % 10000 / 100;
d = ymd % 100;

こうしたいの?
0711デフォルトの名無しさん2007/12/02(日) 01:23:21
>>710
サンクス、ばっちりです
0712デフォルトの名無しさん2007/12/02(日) 01:38:53
すみません>< 今日初めてプログラムを書きます
仮に {0,1,2,3,4,5,6,7,8,9} という配列が書き込まれているとし、
それが再生される段階でどこかが抜けてしまった場合、
例えば {0,1,2,4,5,6,7,8,9,0} となってしまうプログラムを書きたいんですが、
全然うまくいきません。

以下のものを書きました・・

*****************************************************************

#include<stdio.h>

int main()
{
int i;
int length = 10; //length of the sequence
int start = 3; //start of asynchronous

int Seq1[] = {0,1,2,3,4,5,6,7,8,9};
int Seq2[] = {0,0,0,0,0,0,0,0,0,0};

for(i = start; i < length; i++)
{
Seq2[i] = Seq1[i+1];
};

printf("%3d", Seq2[]);
return(0);
}
0713デフォルトの名無しさん2007/12/02(日) 01:50:31
>>712
>Seq2[i] = Seq1[i+1];
iが9のとき、10番目にアクセスしてアウト。
ってか、何がやりたいのかさっぱり。
startが3だから3が抜けた配列を作りたいの?
for ( i = 0; i < length; i++ ) {
if ( Seq1[ i ] != start ) {
Seq2[ i ] = Seq1[ i ];
}
}
こういうことか?
0714デフォルトの名無しさん2007/12/02(日) 01:51:48
>>712
>それが再生される段階でどこかが抜けてしまった場合
ここを詳しく
0715デフォルトの名無しさん2007/12/02(日) 01:53:31
優しい人の集まるスレですね
俺なら日本語でおkとしか言えない
0716デフォルトの名無しさん2007/12/02(日) 02:12:34
>>714

実はこのプログラムはですね、HDDのある特殊な媒体において、
「再生時に同期が外れて書き込まれている磁化パターンがヘッドで読めないところが出てくる」という現象を作りたいんです。

ABCDEF という系列を挙げると、左が過去です。A→B→C→・・・ という順でヘッドで再生されていくと考えてください。
そこで、どこかでヘッドと媒体の同期が取れなくて、読めないとこが出て、A→B→D→・・・ となる場合があるとしてます。

このプログラムは、ある既存のプログラムに追加したいものなのですが、
とりあえずプログラムを書いたことが無いので、このプログラム単体でビットのシフトを再現したいんです・・・

日本語おkですみません・・
0717デフォルトの名無しさん2007/12/02(日) 02:21:09
抜きたい数字はランダムだとすると

rd

for(i = 0; i < NUM_MAX; i++)
{
07187122007/12/02(日) 02:37:49
>>717
ありがとう 
実際は同期がはずれるのは当然ランダムだから、参考にさせてもらうよ

ところで、結果を表示する 

printf("%3d", Seq2[]);  っておかしいでしょうか?

適当に書いてたらこれがあると構文エラーになって出力できない・・・・orz
俺アホすぎ・・
0719デフォルトの名無しさん2007/12/02(日) 02:58:16
こんなんでいいのかどうかわからんけど
void main ()
{
srand( (unsigned int)time(NULL) );
int i;
const int length = 20;
int index = 0;
int Seq1[length];
int Seq2[length];
for( i = 0; i < length; i++ ){
Seq1[i] = i;
Seq2[i] = 0;
}

// 抜けた数字
int out = rand() % length;
for( i = 0; i < length; i++ ){
if( out != i ){
Seq2[index] = Seq1[i];
index++;
}
}
printf( "抜けた数字:%d\n", out );
for(i = 0; i < length; i++)
printf("%d ", Seq2[i]);
printf("\n");
}
07207122007/12/02(日) 03:17:19
>>719
ありがとう


でもムズイぜ・・・('A`)
0721デフォルトの名無しさん2007/12/02(日) 05:58:57
struct point{
int x;//X座標
int y;//Y座標
};
int main(void)
{
struct Point A[1000],B[1000];


線分A[i]B[i]とA[j]B[j]が交差するか判定していくプログラムで
単に二重for文で一個ずつ判定していくんじゃなくて(n-1)^2/2回の判定で済むようなプログラムの書き方を
ご教授願いたいのですが

0722デフォルトの名無しさん2007/12/02(日) 11:13:41
単純に for 文で1個ずつ判定していけば
n(n-1) / 2 回の判定で行けるんじゃないの?
0723デフォルトの名無しさん2007/12/02(日) 11:16:56
>>721
for(i=0;i<n;++i){
for(j=i+1;j<n;++j){
//処理
}
}
こういうこと?
多分n(n-1)/2だが。
0724デフォルトの名無しさん2007/12/02(日) 11:18:32
nC2=n(n-1)/2
(n-1)^2/2回じゃ全て網羅しきれない
0725デフォルトの名無しさん2007/12/02(日) 14:59:42
この場合n=1000で
一回目…A[0]B[0]に対して残り全部の照合1000-1回
二回目…A[1]B[1]に対してA[0]B[0]を除いた1000-2回
   ・
   ・
   ・
1000回目…A[1000]B[1000]に対して0回
for文は使わないという意味じゃなくて
for(i=0;i<n:i++){
for(j=0;j<n:j++){
と単にするだけじゃなくてもっと効率よくするという意味です。
分かり辛くてすいません。
07266362007/12/02(日) 15:44:54
すません質問です。
皆様のお陰で、文字列の抜き出し、結合は出来るようになりました。
今度は、抜き出した文字列の分離をしたいんですが、そんな関数有りますでしょうか?
具体的には
argv[1] = "/usr/boku/graphics/1234.jpg
から、"/usr/boku/graphics/1234"を抜き出して
hoge[40] = "/usr/boku/graphics/1234"
meso[] = "ero.jpg"
strcat(hoge, meso);
でhoge[40] = "/usr/boku/guraphics/1234ero.jpg"
にすることは出来たんです。
それでこんどはまた、
hoge[40] = "/usr/boku/guraphics/1234ero.jpg"
から"/usr/boku/graphics/1234"を抜き出して、
masaru [] = "eroero.jpg"
strcat(hoge, meso)
でhoge[40] = "/usr/boku/guraphics/1234eroero.jpg"
にしたいんです。
抜き出す時点で、
hoge[40] = "/usr/boku/graphics/1234"
hoge1[40]
strcpy(hoge1, hoge);
で後は、strcpyでhoge1を使い回せば良い気もするんですが、もっと良い方法はないでしょうか?
0727デフォルトの名無しさん2007/12/02(日) 15:49:13
>725
それは >723 な気がするが。

もうちょっと工夫するなら

・A[i].x <= B[i].x となるように必要があれば A[i] と B[i] を交換
・A[i].x で昇順ソート

しておけば、B[i].x < A[j].x になった時点で内側の j のループを break できるので、短い線分が広い範囲にばらばら存在してるケースでは比較回数が削れると思う。

まじめにやるんだったら平面走査法になると思うけどいい参考ページがちょっと見つからなかった……
0728デフォルトの名無しさん2007/12/02(日) 15:53:17
>726
hoge[40] = "/usr/boku/graphics/1234" になってる時点で、
char *begin = hoge + strlen(hoge);
しておいて、
strcpy(begin, masaru);
07296362007/12/02(日) 16:29:19
>>728
なるほど。
こんなことが出来たのは感激。さすがC言語って感じ。
char *begin = hoge + strlen(hoge);
で*beginにhoge[40] = "/usr/boku/graphics/1234"以降の空白の配列のポインタを代入して、
strcpy(begin, masaru);で結果として、/usr/boku/graphics/1234eroero.jpgが出来ると。
char masaru[] = "ero.jpg";
char meso[] ="eroero.jpg";
char hoge[40] = "/usr/boku/graphics/1234" ;
int i = strlen(hoge);
char *begin = hoge + i;
strcpy(begin, masaru);
printf("%s¥n",hoge);
begin = hoge + i;
strcpy(begin, meso);
printf("%s¥n",hoge);
これだったら、確かに"/usr/boku/graphics/1234"が使い回せますね。
でも、こんなプログラム書いたらコメントしてないと後で何してるのかわからなくなりそう。
0730デフォルトの名無しさん2007/12/02(日) 16:40:38
>>726
>hoge[40] = "/usr/boku/guraphics/1234ero.jpg"
>から"/usr/boku/graphics/1234"を抜き出して、
ディレクトリ変わってるのはtypoよな?

>今度は、抜き出した文字列の分離をしたいんですが、そんな関数有りますでしょうか?
ない

具体的なコードの流れとか関数の切り分け方とか
分からんとどうするのが良いとか何とも言えないけど、
個人的な好みだと、
hoge[40] = "/usr/boku/graphics/1234" の段階でstrcatは使わずに
hoge1[40]、hoge2[40]を用意してそれぞれ
sprintf(hoge1, "%s%s", hoge, meso);
sprintf(hoge2, "%s%s", hoge, masaru);
とすると思う。

どうしても切り出す必要があるなら、前提条件が揃えばstrstrを使うとか
hoge[strlen(hoge)-strlen(meso)] = '\0'とか、まぁ色々あると思うけど。
0731730 2007/12/02(日) 16:42:12
うぇwww質問主の返事の方が早かったw
でしゃばってすんまへん
07326362007/12/02(日) 16:45:39
>>730
いえいえ、そんな。
本当にありがとうございます。
ここの人達はめっちゃ紳士だから大好きだ。
0733デフォルトの名無しさん2007/12/02(日) 16:56:33
>めっちゃ紳士
失礼な!
0734デフォルトの名無しさん2007/12/02(日) 17:49:49
Visual C++ 2005 Express EditionをC言語のコンパイラーとして 使いたいけど そのまま打ち込めばちゃんとコンパイルされますか?
0735デフォルトの名無しさん2007/12/02(日) 18:05:21
いいえ、正しい手順に則って打ち込まないとコンパイルしてくれません
0736デフォルトの名無しさん2007/12/02(日) 18:44:08
735さん ありがとうございます。 わざわざ他のをインストールしてやるより楽でいいかなと思ったですが、 C言語とどういう点で違うかわかりますか? 初歩的なレベルのC言語をやる程度です
0737デフォルトの名無しさん2007/12/02(日) 19:33:37
厳密にCとC++を区別する必要がないなら今は気にしなくていいよ。
参考書等を頼りに勉強して、不明点が出てきたらまた聞きに来るといい。
0738デフォルトの名無しさん2007/12/02(日) 19:35:01
とりあえず拡張子を.cにすればコンパイラがよしなにはからってくれるんじゃね?
0739デフォルトの名無しさん2007/12/02(日) 20:12:12
マクロを全く同じ名前/内容の関数に置き換えたいのですが、
そういうことってできますか?
0740デフォルトの名無しさん2007/12/02(日) 20:20:10
例えば?
0741デフォルトの名無しさん2007/12/02(日) 20:25:58
>>739

ケースバイケース。
Cの場合、使われてる場所で引数の型が異なると無理。
C++だと、テンプレートにすれば大概OK。
引数の型が一緒なら、どっちでもできるはず。
0742デフォルトの名無しさん2007/12/02(日) 21:06:06
## を使ってるマクロなら駄目そうだ。
0743デフォルトの名無しさん2007/12/02(日) 22:44:59
#define func(f,x) f(x)

int foo(int x){
return x+1;
}

int main(){
return func(foo,-1);
}
0744デフォルトの名無しさん2007/12/02(日) 22:48:24
typedef int (*p_func)(int);

int func(p_func f,int x){
return f(x);
}

int foo(int x){
return x+1;
}

int main(){
return func(f,-1);
}
0745デフォルトの名無しさん2007/12/02(日) 22:49:14
int main(){
return func(f,-1);
}
↓
int main(){
return func(foo,-1);
}
0746デフォルトの名無しさん2007/12/02(日) 23:31:04
BCC Developerで多倍長精度の計算をするgmpライブラリは使えますか?
0747デフォルトの名無しさん2007/12/02(日) 23:33:28
int *aとint* aの違いって何ですか?
0748デフォルトの名無しさん2007/12/02(日) 23:36:10
見た感じが違う
0749デフォルトの名無しさん2007/12/02(日) 23:37:58
スペースの空き方が違う
0750デフォルトの名無しさん2007/12/02(日) 23:40:42
int *a; //アスタリスクが修飾するのは型ではなく変数名の方だと言う事を確り分かっている普通の書き方
int* a; //「型が変化するのに修飾対象が変数名だなんておかしい」と現実に目を向けない人可哀相な人がよくする書き方。
0751デフォルトの名無しさん2007/12/02(日) 23:48:52
またそんな燃料投下しなくても・・・
別にどっちだっていいよ、プロジェクト等ならコーディング規約に沿えばいい。
個人なら自分がいいと思うほうにすればいい。
何でこの話題で荒れるか知りたければCFAQとか見ればいい。
0752デフォルトの名無しさん2007/12/02(日) 23:49:02
前者はC、後者はC++でよく見かける。
0753デフォルトの名無しさん2007/12/02(日) 23:51:53
じゃ、int*a がBestなのですね。 有難うございました。
0754デフォルトの名無しさん2007/12/02(日) 23:57:46
両方くっつけるのは全然見ない
■ このスレッドは過去ログ倉庫に格納されています