• 締切済み

C言語の用語について

void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));  C言語の辞書を読むとこのようなものが出るのですが、このvoid *baseとかsize_t nmembの用語を解説されてる本か、何かを教えていただけますか?辞典を読んでも分からなくて・・・辞書の辞書が必要です・・・。

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.5

>そうです、こういった解説が欲しいんです!本とかあるでしょうか? >なければ何で調べるのがベストなのでしょうか? それは入門書の「関数の宣言」とか「関数のプロトタイプ」とかの項目にあるはずですよ。 >また別な入門書が必要かな・・・。 まずは今の入門書を繰り返し読みましょう。

yamada11
質問者

お礼

とりあえず、WEBで検索しながら入門書を復習しながら、たまに質問しながら疑問を一つ一つつぶしていくしかないですよね。 ありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

>>「base」と「nmemb」は自由に付けれる変数名 > >そうです、こういった解説が欲しいんです!本とかあるでしょうか? 変数の名前の付け方に関する解説ということですか? プログラミングスタイル全般についての本ならありますが、 そこまでピンポイントなのはないんじゃないかなあ。 肝腎なのはパラメータの型なので、名前は頭からなくして読んでみる というのはできませんか?

  • BearCave
  • ベストアンサー率20% (189/909)
回答No.3

>このvoid *baseとかsize_t nmembの用語 「base」と「nmemb」は自由に付けれる変数名ですから、用語ではないですよね。とすると、質問は「void*」「size_t」のことでしょうか? 「void*」は汎用ポインタといって、どの型のポインタも受け渡すことができます。「size_t」は「unsigned int」と同じです。 C言語の入門書にならどれでも載ってると思いますよ。 ところでこの関数の4つ目の引数は「関数ポインタ」ですが、これが一番理解するのが大変だと思います。

yamada11
質問者

お礼

>「base」と「nmemb」は自由に付けれる変数名 そうです、こういった解説が欲しいんです!本とかあるでしょうか? なければ何で調べるのがベストなのでしょうか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「void *base とか size_t nmemb の用語」という表現がすでに意味わからん. そもそも「用語」じゃないしね.

yamada11
質問者

補足

そうなんですか・・。辞書を見るとこんなんばかりで・・・。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

今までに習得した内容を確認する例題として、コーディングが記載 されているはずです。 それを理解しないまま、コーディングを見ても何をどう調べてよいか 分からなくなります。 ここで、キーワードは、”void”と"*"です。 もう一度、基礎を復習してみてください。 http://www1.odn.ne.jp/k-miura/study/c-c-bsc.html

yamada11
質問者

補足

これは辞書を読んだ時に感じたことなのですが・・・。まぁ、参考書でもアルゴリズムの本見ると分からない言葉が出て分からないので一緒ですが(笑) 一応入門書は読んだんですが、まだ入門レベルは卒業してないようですね、私。また別な入門書が必要かな・・・。

関連するQ&A

  • C言語の参照はずしについて

    ソートのプログラムなんですが #include <stdio.h> #include <stdlib.h> int comp(const void *, const void *); int main() { int i; int test[6] = {10, 8, 2, 6, 4, 0}; qsort(test, (size_t)6, sizeof(int), comp); printf("\n"); for (i = 0; i < 6; i++) printf("%d\n", test[i]); return 0; } int comp(const void *a, const void *b) { static int i = 1; printf("%02d--%d,%d\n", i, *(int *)a, *(int *)b); i++; return (*(int *)a - *(int *)b); } 最後のreturnの()の中身がよくわかりません。「参照はずし」という事をしてるらしいんですが「参照はずし」とは何ですか意味も教えてください。

  • プログラミングカテゴリ見つかりませんでした…C言語

    プログラミングカテゴリ見つかりませんでした…C言語勉強中なのですが…参考書の以下の書き方がよくわかりません。 int strncomp(const char *s1,const char *s2,size_t n) このsize_tってどういう意味なのでしょうか? 教えていただけると助かります

  • qsortについて

    qsort()で構造体をソートする時に、qsortの第3,4引数時の、「size t_t size, int (*cmp)(const void *a, const void *b)」の使い方が分かりません。 何故これを使ってソートが出来るのでしょうか?そもそも、構造体を送った時に、自作関数内での書き方にも疑問があります。 int main(void){ MAX dt[5]={・・・・}; //構造体変数宣言 ・・・・・ qsort(dt,5,sizeof(MAX),sum); //(*1) .... return 0; } int sum(const void *a, const void *b){ MAX *p1 = (MAX *)a; //(*2) MAX *p2 = (MAX *)b; //(*2) ・・・・ return ~; } ---------------------------------------------------- *1: 第3引数のsizeof(MAX)って何ですか? *2: 例えばint型が渡されてreturnする場合は、「return *(int *)a - *(int *)b 」でいいのに、   何故構造体の場合はこう書かないといけないのですか?

  • qsortの関数について

    qsortの関数について 下記のようにある本に関数の呼ぶ時、関数名(int_cmp)が引数(const void *, const void *)の後に書かれて理由を教えて頂きたい。よろしくお願いします。 質問のプログラム int int_cmp(const int *a ,const int *b) { ------ } int main { qsort(x, nx , y, (int (*)(const void *, const vois *))int_cmp);

  • C言語のソートについて

    C言語で下記のファイルの中身を昇順と降順で出力しようとしているのですが、ソートが上手くいっていない状況です。 どなたか修正点を教えて頂けないでしょうか? 「ファイルの中身」 2022/11/14 16:19:56 4+4,8.000000 2022/11/14 16:20:14 7+7,14.000000 2022/11/14 16:20:18 8+8,16.000000 2022/11/15 16:19:56 4+4,8.000000 2022/11/14 16:20:14 7+7,14.000000 2022/11/18 16:20:18 8+8,16.000000 2022/11/17 16:19:56 4+4,8.000000 2022/11/14 16:20:14 7+7,14.000000 2022/11/14 16:20:18 8+8,16.000000 「ソースコード」 #include <stdio.h> #include <string.h> #include <stdlib.h> int cmp_u(const void* a, const void* d) { return *(char*)a - *(char*)d; } int cmp_d(const void* a, const void* d) { return *(char*)d - *(char*)a; } int main() { int r,i,n; FILE* fp; char sin[9][1000]; fp = fopen("log.txt", "r"); if (fp == NULL) { printf("ファイルオープン失敗\n"); return -1; } for (i = 0; i < 9; i++) { fscanf(fp, "%s", &(sin[i])); } fclose(fp); printf("ASC or DESC: "); scanf(" %s", &ad); if (strcmp(ad, "ASC") == 0) { qsort(sin, 9, sizeof(char), cmp_u); } else { qsort(sin, 9, sizeof(char), cmp_d); } for (i = 0; i < 9; i++) { printf("%s\n", sin[i]); } return 0; }

  • qsortの関数ポイントについて

    qsortの関数ポイントについて int int_cmp(const int *a, const int *b) { ------ } main { qsort(x,nx,sizeof(int),(int (*) (const void *, const void * )) int_cmp); 上記の(1)関数のポイント,(int (*) (const void *, const void * )) int_cmpを  普通の(2)関数ポイント(* int_cmp) (const void *, const void * )で呼べない  理由 、また、(1)(2)は、同じ意味でしょうか、教えて頂きたい。

  • こんなコンパイルエラーがでます。

    OS:WinNT4.0 環境:VC++6.0 MFC コンパイル時に次のエラーが出て来ました。 error C2664: 'qsort' : 4 番目の引数を 'int (const void *,const void *)' から 'int (__cdecl *)(const void *,const void *)' に変換できません。 (新しい機能 ; ヘルプを参照)スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。 qsort関数の引数関数を'int xxxxxxx(const void *,const void *)に宣言したところこのエラーが出てきました。 何がなんだかさっぱりわかりません。 ぜひお願いします。

  • C言語についてなのですが・・・

    さきほども上げたのですがカテゴリが間違っていたのでもう一回書き込みました まだプログラムの勉強をはじめた初心者なのですが、 テキストファイルから文字を読みこみ、大文字ならば小文字に変換し辞書順に並びかえるプログラムを作っているのですがどうしてもうまくいきません。 例えばtest.txtに XXX YYY YY XX BBB aaa aa BB とあれば aa aaa bb bbb xx xxx yy yyy と表示されるよにしたいんです。 自分が作ったプログラむはこれです。 まだテキストファイルからでなくキーボードからの入力になっていますが・・・ #include<stdio.h> #include<stdlib.h> #include<string.h> #include <ctype.h> int soto( const void *x, const void *y); int main(int argc, char *argv[]){ FILE *input; char str1[1000]; int i, j; for (i = 1; i < argc; i++){ qsort(argv[i], 1000, sizeof( char *), soto); strcpy(str1, argv[i]); for(j = 0; j < 100; j++){ str1[j] = tolower( str1[j] ); } printf("%s\n", str1); } return 0; } int soto( const void *a, const void *b){ char *x, *y; x = (char*)a; y = (char*)b; return x-y; } これだと小文字にはなるんですがソートされずに表示されてしまいます・・・ どのようにすればいけるのかご指摘のほどおねがいします

  • C言語について

    全くの初心者ですが、C言語というものを勉強したくて…「ずばりわかるC言語」と言う本を買いました。 本の説明の通りに進めているつもりなのですが…ディレクトリc:\borland\bcc55\Binがどこにあるのかわかりません…。 ※cpフォルダーは必ずcドライブの直下に作って下さい。 の直下の意味もよくわからないのですが…。 なにぶん全くの初心者なので、なるべく専門用語ではない言葉で詳しく説明して頂けると助かります。※CP用語辞典というものも購入したので、少しはわかりますが…。 何卒宜しくお願い致します。

  • C言語でのconstを返す関数

    お世話になります。 C言語では、const の関数というのを認めているようですが、どうも使い方が分かりません。 const int foo() {  これは通常のint foo()とどのように違うのでしょうか。  よろしくお願いいたします。

専門家に質問してみよう