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

C言語なら俺に聞け! Part 114

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/09/17(土) 00:26:58
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

C言語なら俺に聞け! Part 113
http://pc8.2ch.net/test/read.cgi/tech/1125136478/

他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
000222005/09/17(土) 00:40:46
2
0003デフォルトの名無しさん2005/09/17(土) 00:41:22
関連スレ
うんこの汁の部分
http://ex11.2ch.net/test/read.cgi/news4vip/1126884499/
0004デフォルトの名無しさん2005/09/17(土) 00:51:06
>>1
乙!
0005デフォルトの名無しさん2005/09/17(土) 01:19:21
C++のSTLのListやMapといったものをCで書くとどういった風になりますか?
0006デフォルトの名無しさん2005/09/17(土) 01:19:59
無理矢理書くなら、マクロでテンプレートっぽいのを実現できなくもない。
0007デフォルトの名無しさん2005/09/17(土) 08:05:57
そういえば、昔のtemplateが無い頃のC++には
generic.hというものがあったそうな。
今でもTurboC++を落とせば手にはいるでしょう。
Cで使えるかはわからんけど。
0008デフォルトの名無しさん2005/09/17(土) 08:19:39
struct Node {
struct Node* prev;
struct Node* next;
FooType val;
};

って構造体を定義して、とか言うレベルの話でないの?
Mapはただの2分探索木(VC++の奴の場合)だから1次元配列でも実現できるし
0009デフォルトの名無しさん2005/09/17(土) 09:13:55
いや、set/mapは厳密に要件を満たすのは結構むずかしいよ。
単純な2分木だと、最悪条件ができる可能性があって、
STLのset/mapはそれを許さないから。

で、結局どの実装も赤黒木になってると思った。
0010デフォルトの名無しさん2005/09/17(土) 09:29:09
C!!!!!!!!!!
0011デフォルトの名無しさん2005/09/17(土) 10:36:40
>>9
べつにそれは、言語関係ないだろ。
Cで実現するためのテクニックの話じゃねーの?
0012デフォルトの名無しさん2005/09/17(土) 12:55:55
struct ListNode_ {
 struct ListNode_* prev;
 struct ListNode_* next;
 char value[1]; /* 可変長 */
};

として、リストの関数内ではこれで扱ってるフリをし、
外では

struct ListNodeInt {
 struct ListNodeInt* prev;
 struct ListNodeInt* next;
 int value;
};

とかを使うってのもできないこともない。
ただ、色々と型チェックできないのが欠点。
俺は、多少気持悪くても、テンプレート紛いのマクロの方が好きかな。
0013デフォルトの名無しさん2005/09/17(土) 13:03:52
前スレ1000は\nを入れ忘れ
0014デフォルトの名無しさん2005/09/17(土) 13:12:27
puts 使えよ。
0015デフォルトの名無しさん2005/09/17(土) 13:14:31
1000GET1001 名前: 1001 投稿日: Over 1000 Thread
0016デフォルトの名無しさん2005/09/17(土) 14:34:35
>>12
http://seclan.dll.jp/c99d/c99d04.htm#dt19990726
0017デフォルトの名無しさん2005/09/17(土) 14:37:08
へぇ、gcc で サイズ0の配列使えるのは知ってたが、これはしらんかった。
0018デフォルトの名無しさん2005/09/17(土) 15:57:24
>>16
んなもん知っとるわ。
C89 も考慮して 1 を書いたんじゃ。

あと、そのページでは 1 引いてるけど、

 offsetof(ListNode_, value) + sizeof (int) * num

のようにしたんでも構わない。
0019デフォルトの名無しさん2005/09/17(土) 16:55:06
大阪人は死ね
0020デフォルトの名無しさん2005/09/17(土) 17:00:37
>>16
んなもん知っとるわ。
C89 も考慮して 1 を書いたんじゃ。

あと、そのページでは 1 引いてるけど、

 offsetof(ListNode_, value) + sizeof (int) * num

のようにしたんでも構わない。
0021デフォルトの名無しさん2005/09/17(土) 17:11:23
しつこいようだが…
前スレの
>981
>realloc(0, size); realloc(p, 0); とかって書いてる奴は馬鹿。

それって結局名前と固定観念の問題だろうよ?
alloc(0,size);alloc(p,size);alloc(p,0);
と普通に書いてて、敢えてmallocやfreeなんて
余分な関数を使う奴が居るかねぇ?
0022デフォルトの名無しさん2005/09/17(土) 17:26:15
お前がめんどくさがりなのは分かったが、
reallocはreallocであってallocでは無い。

名前と固定観念と言うが、
文脈を考えたらそれぞれを利用するのは当然だろ。

とりあえず、お前の書いたソースは、
人に見せられるような物ではないことも分かったからいいや。
0023デフォルトの名無しさん2005/09/17(土) 17:28:25
何をイチャついておる
0024デフォルトの名無しさん2005/09/17(土) 17:52:49
俺こんな関数作った。

void god(void* info, void* res, ...);

info に何をしたいかに関する情報を入れて、
第3引数以降はそれに対応する引数を書けば、
res に答えが返ってくるんだ。
この関数1つで何でもできるように作ってあるから、
常にこの関数を使えばいいよね!
これ普通に使ってるから、
他の関数を使う奴なんていないよねぇ?


ってのがナンセンスなのと同じようなことだな。
0025デフォルトの名無しさん2005/09/17(土) 18:19:27
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student {
char number[20];
char name[20];
char shumi[20];
};

int main(int argc, char *argv[]){

int i, n=256, j=0, k=1;
FILE *fp;
char name[20];
char number[20];
char koumoku[20];
char s[201];
char word[200][200];
char *p1;
char *p;
struct student seito[100];


if(argc <= 1)
return 1;

if(strcmp(argv[1], "data")==0)
printf("file name:%s\n", argv[2]);
つづく。
0026デフォルトの名無しさん2005/09/17(土) 18:20:58
終わり
0027デフォルトの名無しさん2005/09/17(土) 18:21:13
fp = fopen(argv[2], "r");
if(fp==NULL)
return(0);

while(!(feof(fp))){
fgets(s, 20, fp);
p=s;
i=0;

while(1){
p1=word[i];

while(!(*p==','||*p=='.')){
*p1=*p;
p1++; p++;
}
i++;
*p1='\0';

if(*p=='.')
break;
p++;
}
strcpy(seito[j].number, word[0]);
strcpy(seito[j].name, word[1]);
strcpy(seito[j].shumi, word[2]);
j++;
}
fclose(fp);
つづく。
0028デフォルトの名無しさん2005/09/17(土) 18:21:56
uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
0029デフォルトの名無しさん2005/09/17(土) 18:22:26
while(k > 0){
printf("調べたい項目を入力して下さい(number or name or shumi or end):");
scanf("%s",koumoku);
if(strcmp(koumoku, "number")==0)
while (k > 0) {
printf("名前を入力して下さい。(終了はend入力)");
scanf("%s", name);
k = strcmp(name, "end");
if (k != 0) {
for (j = 0; j < n && k != 0; j++) {
k = strcmp(name, seito[j].name);
if (k == 0)
printf("学籍番号は %s\n", seito[j].number);
}

if (k != 0)
printf("見つかりません\n");
k = 1;
}
}

else if(strcmp(koumoku, "name")==0)
while (k > 0) {
printf("学籍番号を入力して下さい。(終了はend入力)");
scanf("%s", number);
k = strcmp(number, "end");
if (k != 0) {
つづく。
0030デフォルトの名無しさん2005/09/17(土) 18:23:29
本当に終わり
0031デフォルトの名無しさん2005/09/17(土) 18:25:58
for (j = 0; j < n && k != 0; j++) {
k = strcmp(number, seito[j].number);
if (k == 0)
printf("名前は %s\n", seito[j].name);
}

if (k != 0)
printf("見つかりません\n");
k = 1;
}
}
  else if(strcmp(koumoku, "shumi")==0)
while (k > 0) {
printf("名前を入力して下さい。(終了はend入力)");
scanf("%s", name);
k = strcmp(name, "end");
if (k != 0) {
for (j = 0; j < n && k != 0; j++){
k = strcmp(name, seito[j].name);
if (k == 0)
printf("趣味は %s\n", seito[j].shumi);
}
if (k != 0)
printf("見つかりません\n");
k = 1;
}
}
else if(strcmp(koumoku, "end")==0)
k = 0;
}return 0;
}
これってどうなの?
0032デフォルトの名無しさん2005/09/17(土) 18:28:41
>>31
で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?
で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?
で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?
で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?
で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?で?
0033デフォルトの名無しさん2005/09/17(土) 18:28:56
>>24
極端に言えばそういうことだわな。
ってかオマエオモシロスwwwww
0034デフォルトの名無しさん2005/09/17(土) 18:32:34
引数を初心者にわかりやすく説明できる人いる?
0035デフォルトの名無しさん2005/09/17(土) 18:34:59
いらない。
0036デフォルトの名無しさん2005/09/17(土) 18:41:15
>>31
どうなんでしょうね? 分かりません。
0037デフォルトの名無しさん2005/09/17(土) 19:02:57
>24
>俺こんな関数作った。
>void god(void* info, void* res, ...);

reallocもmallocとfreeの関数ポインタを使って
定義可能だよね?
そういった意味では高階関数かもしれない。

>22
>お前がめんどくさがりなのは分かったが
Lazyじゃないとプログラマじゃないんだろう?

>文脈を考えたらそれぞれを利用するのは当然だろ。
それが頭が固いって言っている訳です。
常に既存文脈自体を疑わないと言語は進歩しない。

そんな頭が固い人が、えてして
「おい!おい!alloc一つで済んでる文脈に
なんでmallocとかfreeとかをわざわざ持ち込む
必要があるんだぁ???」
と叫ぶんじゃないでしょうか?
つまり何が効率的か?ではなくて
既存の文脈から「しか」判断出来ないように
なってはいないでしょうか?
0038デフォルトの名無しさん2005/09/17(土) 19:15:29
>>37
> Lazyじゃないとプログラマじゃないんだろう?
楽をするための努力は惜しまないのがプログラマ。
あらゆる点で怠惰なだけなのはタダのバカ。

> 常に既存文脈自体を疑わないと言語は進歩しない。
言語を進歩させるためにプログラム書いてるんじゃない。
ちゃんと動作して、動くものを作り、
また、場合によってはそのソースを
他人に引き渡すことも考えてプログラムを書くものだ。
自分世界に引きこもって自分言語で書いていいのは日用プログラマだけ。
0039デフォルトの名無しさん2005/09/17(土) 20:06:12
>>31
何がどうなんだよ
C勉強する前に日本語勉強してこい
0040デフォルトの名無しさん2005/09/17(土) 20:20:01
>>37
天才が故に既存の文脈を疑いすぎて、
自分しか理解できないコードを書くタイプ。

言語の進化自体は、意思を対象に分かりやすく伝える方向で、
進化するもんじゃないのかねぇ。
まぁ本人は分かり易いと思ってるのかもしれないけど。

俺みたいな低脳プログラマは可読性の高い方を支持させてもらうよ。
0041 ◆IDemTl9KaI 2005/09/17(土) 20:48:39
test
0042デフォルトの名無しさん2005/09/17(土) 21:04:58
演習1-10
各タブを\tに、各バックスペースを\bに、各バックスラッシュを\\に置き換えながら、
入力を出力に複写するプログラムを書け。
こうすれば、タブとバックスペースははっきり目に見えるようになる。

K&Rの問題ですけど、\bをgetchar()で入力確認って出来るんですか?
もしかしてUNIXとかならOKってことですか?
0043デフォルトの名無しさん2005/09/17(土) 21:16:21
\rが前についてたりするんじゃねぇの?
0044デフォルトの名無しさん2005/09/17(土) 21:57:10
環境依存な悪寒。
0045デフォルトの名無しさん2005/09/17(土) 22:09:27
>>1
そのK&Rの演習問題の回答は何処にありますか?
0046デフォルトの名無しさん2005/09/17(土) 22:30:41
int c;
while ( (c = getchar) != EOF ) {
 switch( c ) {
  case '\b': printf("\\b"); break;
case '\t': printf("\\t"); break;
  default: putchar( c );
 }
}

実際の動作は別にして、騙し騙しコードを書く知恵も必要です。
0047デフォルトの名無しさん2005/09/17(土) 22:35:26
>>31
コメントも無い、インデントも入ってない、処理の説明すらない
そんなソースを出されて、ただ一言「これってどうなの?」
質問の意味がわからんし、ソース読む気にもならんし。

お前の頭の方こそ「どうなの?」って聞き返したくなるわい
0048デフォルトの名無しさん2005/09/17(土) 22:44:12
>>46

> 各バックスラッシュを\\に置き換えながら、

がないぞ。
0049デフォルトの名無しさん2005/09/17(土) 22:46:22
int c;
while ( (c = getchar) != EOF ) {
 switch( c ) {
  case '\b': printf("\\b"); break;
  case '\t': printf("\\t"); break;
  case '\\': printf("\\\\"); break;
  default: putchar( c );
 }
}

すまそ
0050デフォルトの名無しさん2005/09/17(土) 22:49:02
>>45
『プログラミング言語Cアンサー・ブック』
ttp://www.amazon.co.jp/exec/obidos/ASIN/4320027485/
0051デフォルトの名無しさん2005/09/17(土) 22:51:04
こういうコードを書くとメモリを無駄遣いした気になって幸せになります。

#include<stdio.h>
#include<string.h>
int main(){
    int i;
    char t[256][3];
    for(i=0;i<256;++i)sprintf(t[i],"%c",i);
    strcpy(t['\b'],"\\b");
    strcpy(t['\t'],"\\t");
    strcpy(t['\\'],"\\\\");
    while((i=getchar())!= EOF)
        fputs(t[i],stdout);
}
0052マクロか?2005/09/17(土) 22:51:58
>>49
それ以前に、getchar って何もんだ?
0053デフォルトの名無しさん2005/09/17(土) 22:53:31
>51
char が signed だと...
0054532005/09/17(土) 22:55:10
...別にどうってことないか。
0055デフォルトの名無しさん2005/09/17(土) 22:58:07
おいおい!!
0056デフォルトの名無しさん2005/09/17(土) 23:04:07
>>52
ごめん、関数コールだったorz
Ruby厨だから違和感感じなかった
0057デフォルトの名無しさん2005/09/17(土) 23:06:55
>>51
なんかかっこええ。
実用的じゃないとはいえそういうのも思いついときたいな。
0058512005/09/17(土) 23:17:26
本当に細かいことだけど、nul文字の表示ができんかった。
×fputs(t[i],stdout);
○fwrite(t[i],1,2-!t[i][1],stdout);

ま、コンソールに出すのには問題ないから別に良いか
0059デフォルトの名無しさん2005/09/17(土) 23:22:36
引数の具体的な例での説明などのあるサイト教えてください。
いろいろ回ったんですが、ぱっとしない内容ばかりで。。。

「プログラミング言語で関数やメソッドを呼び出す際に、その関数やメソッドを実行するために渡さなければならない値のこと。」
っていう答えばかり。
0060デフォルトの名無しさん2005/09/17(土) 23:23:41
具体例だろ?
んなら、

int main(int argc, char **argv)


はい、具体例。
0061デフォルトの名無しさん2005/09/17(土) 23:27:58
引数を渡す、返す、などのイメージがわかなくて困っています。
0062デフォルトの名無しさん2005/09/17(土) 23:30:21
void func(int hikisuu) {
    printf("%d\n", hikisuu);
}
int main(void) {
    func(10);
}
0063592005/09/17(土) 23:36:13
>>62
なるほど、
int main(void) {
func(10);
っていうのが、引数を返すって事なんですか?
で、
引数を設定してるのが、
void func(int hikisuu) {
printf("%d\n", hikisuu);
}
って事ですかね。
0064デフォルトの名無しさん2005/09/17(土) 23:43:50
設定なんて俺様用語使うなよ。
0065592005/09/17(土) 23:45:13
あれ、逆かな。
混乱してきた。
0066デフォルトの名無しさん2005/09/17(土) 23:46:48
引数を返すという言葉は少し語弊がありませんか。
function (arg1, arg2) ;
などと呼び出していることが引数を渡していて、貴方方の言っている引数を返すという行為は
関数内部におけるreturn文の実行のことではないですか?
int function {
...
return [値] ;
}
0067デフォルトの名無しさん2005/09/17(土) 23:53:53
引数って言葉に騙されているだけだな。
関数に渡す変数の値、て覚えときゃ十分。

また、関数は通常は1つの値しか返せないので、2つ以上返す場合は
ポインタ変数で渡す必要がある。

a = 4; b = 7;
x = sum(a,b); // x = 7

int sum(int a,int b) { return a+b; }

swap(&a,&b); // aとbの値を交換する。
void swap(int *p,int *q) { int tmp = *p; *p = *q; *q = tmp; }

うえの2つの違いが分かったらポインタも同時にばっちしです。
0068デフォルトの名無しさん2005/09/18(日) 00:00:04
#include <iostream>

using namespace int main std;
()
[ cout<

 
0069デフォルトの名無しさん2005/09/18(日) 00:00:44
ごめん まちがえた。すまそ。↑
0070592005/09/18(日) 00:02:26
>>66
なるほど、確かにそうですね。
って事は、
void func(int hikisuu)
int main(void) {
func(10);
}

void func1(int hikisuu) {
printf("%d\n", hikisuu);
}

ってやると引数の関係がわかりやすいですね。
こうなると、なんで"hikisuu"が引数の意味になるんですかね?
なんとなく、"10"っていう数字が引数に見えちゃう。



0071デフォルトの名無しさん2005/09/18(日) 00:04:16
「引数の関係」てなんだよ。
勝手な用語を作るなよ。
0072592005/09/18(日) 00:07:12
>>67
値を返すっていうのはなぜ必要なのでしょうか?
返さないとなにか不都合が生じてしまうんですかね。
0073デフォルトの名無しさん2005/09/18(日) 00:08:44
>>72
返さなきゃならないときにそういう方法をとるって意味だ、ボケ。
返さなくてもいいし、返さなきゃ不都合が起きるときに返すんだよ。アホか。
0074592005/09/18(日) 00:09:42
>>64>>71
ごめんなさい、そういう事はあんまりわかってないです。
0075592005/09/18(日) 00:10:41
>>72
なるほどー、すごいわかりやすいです。
0076デフォルトの名無しさん2005/09/18(日) 00:11:54
今日は変な粘着がいるので明日またおいで。
ちゃんと初心者の本でも読み返した後で、だけど。

言葉なんてどうでもいいから、自分で足し算ゲームでも作って見るのが
一番の上達の近道だ。
0077592005/09/18(日) 00:15:32
>>76
まだまだ初心者だけど、今も本見ながら頑張ってるんで、よろしくお願いします。
もうすぐ、Cでコンパイラを開発しないといけないんですが、どんな事するんですかねー。
コンパイラとか開発された方いますか?
0078デフォルトの名無しさん2005/09/18(日) 00:27:28
>>77
コンパイラ・スクリプトエンジンのスレを一度見れ。
0079引数とはこういうもの2005/09/18(日) 01:10:42
*基本・・・関数(第1引数、第2引数、・・・・);
   例・・・ strcmp( str, "aaa");  この場合第1引数がstr 第2引数が文字列"aaa"

戻り値・・・ return (戻り値); 
  例・・・ return (0); この場合戻り値は0

*実例
int main(void);  //引数がvoidの場合は引数なしと同じ
{
    char str[255];
    int  rc;   //エラー判定用の変数
    
    scanf("%s",str);   //配列strに文字を入れる
    if ((rc = strcmp( str, "aaa")) == 0 ) {   //配列strの値がaaaかどうかを判断して、戻り値をrcに格納
        printf("aaaを入力しやがったなテメー!!!\n");  //↑の戻り値が0の場合はこの処理をする
    } else {
        printf("aaaを入力しろよボケ!!!\n");
    }

    return 0;  //returnは()を省略できる
}

strcmpは実際以下の処理をしている
   渡された第1引数と第2引数の値を比べる
   等しい場合はreturn 0;で戻り値を0で返す、すると↑のソースで rc に0が入ることになる
   等しくない場合は大きさを見て0以外の負の値もしくは正の値をreturnで返している
0080デフォルトの名無しさん2005/09/18(日) 01:14:56
returnは()を省略できる

よくこうゆう嘘を見かけるんだが
"(つけても意味がないが)つける事ができる" が正解
0081デフォルトの名無しさん2005/09/18(日) 01:16:46
>80

そんな事より

>引数がvoidの場合は引数なしと同じ

どーよw
0082デフォルトの名無しさん2005/09/18(日) 01:22:14
void *p ;
void f (void) ;
さんしゅるいのぼいどおー
0083デフォルトの名無しさん2005/09/18(日) 01:23:49
>>80>>81
returnに関しては初耳だな、てか今まで気にしてもいなかったが、考えてみると納得
まあ初心者に説明してるんだから、ざっくりでいいかなって
細かく説明しすぎるとまたこんがらがるし
0084デフォルトの名無しさん2005/09/18(日) 01:25:37
Windosで共有されたフォルダに対してFindFirstFile()使ったら
時々「指定されたネットワーク名は利用できません」が出るんですが・・・

一応エクスプローラーでは認識してるし、DirもOK。
(ネットワーク系のエラーは・・・多分無いはず)
ただそのフォルダには10万以上のファイルが存在してるんだけど・・・
(ローカルだと問題なし)
このファイル数が影響してるんですかね?
OSはWin2000Serv同士です。

もし原因知ってる方がいましたら教えてください。
0085デフォルトの名無しさん2005/09/18(日) 01:25:39
だったらウソ説明しないほうがマシだ
0086デフォルトの名無しさん2005/09/18(日) 01:26:51
>>84
原因はスレも選べぬお前の頭
0087842005/09/18(日) 01:28:16
いやC言語として使っているので・・・
0088デフォルトの名無しさん2005/09/18(日) 01:28:56
>>85
では初心者にも分かりやすいように簡素に説明してくださいよ、お代官様
0089デフォルトの名無しさん2005/09/18(日) 01:29:21
>>87
馬鹿につける薬は無いな。去れ。
0090デフォルトの名無しさん2005/09/18(日) 01:30:27
>>88
何を?
0091842005/09/18(日) 01:30:57
>>89
知らないなら無理にレス付けなくてもいいよ。
0092デフォルトの名無しさん2005/09/18(日) 01:31:06
>>90
まあいいや
つかvoidを引数として使う場合って引数なしと同じでいいんじゃん
0093デフォルトの名無しさん2005/09/18(日) 01:33:59
void は引数としてつかえない。
0094デフォルトの名無しさん2005/09/18(日) 01:34:15
急速にスレの質が低下してまいりました
0095猛勉強中(59)2005/09/18(日) 01:34:33
>>79
すっごいわかりやすいです!
ありがとうございます、テキストファイルに保存しておきましたw

こうみると、引数って言葉をしらなくても、知らない間にプログラム組む時に
使ってるんですねー。

けど、これでよりプログラムを組みやすくなったと思います。
ありがとうございます。

>>80
なるほどって感じです。
0096デフォルトの名無しさん2005/09/18(日) 01:35:38
鵜呑みにするな!!!
0097猛勉強中(59)2005/09/18(日) 01:37:18
voidってのは引数として使ってるんじゃなくて、引数としては使えないんですよね?
と言う事は、voidとすることの意味は何なんですか?
0098デフォルトの名無しさん2005/09/18(日) 01:37:33
>>93
それこそウソじゃん?
使えんわけないじゃんか

※ 関数は一般に引数によって値を受け取り、returnで返却値を返すものですが、
中には引数が必要無い関数や返却値の無い関数も存在します。
そのような場合、「引数が無い」ことや「return値が無い」ことを
明示するために「void」は用いられます。

ぐぐったぞ
0099猛勉強中(59)2005/09/18(日) 01:39:14
>>98
これまたすごいわかりやすい。
0100デフォルトの名無しさん2005/09/18(日) 01:39:27
>>97
main(void) == main()
0101デフォルトの名無しさん2005/09/18(日) 01:45:48
aaaaaaa
解釈の違いだ
voidが引数として使えないって言ってるのって、
呼ばれたほうの関数に引数として渡らないってことだな?
俺は記述として引数と同じ記述のことを言ってたわ
まあいいや
どうでもいいよ
電池キレタ
送ってくれよ
■ このスレッドは過去ログ倉庫に格納されています