「C言語/サンプル/メモ」の編集履歴(バックアップ)一覧はこちら

C言語/サンプル/メモ」(2012/09/23 (日) 05:19:47) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

** 構造体 *** タイプ1 基本形 構造体の宣言+変数の宣言 #highlight(c){{ struct Syain { char* name; int age; }; struct Syain syain; // 構造体の変数の宣言 }} *** タイプ2 構造体の宣言と同時に変数の宣言 #highlight(c){{ struct Syain2 { char* name; int age; } syain2a = {"kogekoge", 14}; // 宣言と同時に初期かも出来ます struct Syain2 syain2b = {"hogehoge", 14}; // 宣言と同時に初期かも出来ます }} *** タイプ3 typedefで構造体に名前を付加 #highlight(c){{ typedef struct Syain3 { char* name; int age; }Syain3a; // Syain3とする事も可能です Syain3a syain3a = {"hogehoge", 14}; // 名前で変数を宣言 struct Syain3 syain3b = {"hogehoge", 14}; // 通常の宣言も使えます typedef Syain3a Syain3c; // 更に別名を付けることも可能 }} *** タイプ4 無名構造体 #highlight(c){{ struct { // 構造体の名前を省略 char* name; int age; }syain4 = {"hogehoge", 14}; // この構造体は、ここ以外での変数宣言が出来ない }} ** 関数 #highlight(c){{ void func(); // 宣言 void funt() { /* 処理 */ } int func(int param1, char* param2); // 戻り値あり int func(int param1, char* param2){ return 0; } }} *** 複数ファイルのプログラム ファイル名:hogehoge.h #highlight(c){{ void func(); // 関数宣言 extern char* lastParam; // hogehoge.cの変数を外部からアクセス可能にする ファイル名:hogehoge.c char* lastParam; // 変数 // 関数実装 void func(char* param1) { printf("Welcome!! %s\n", param1); lastParam = param1; } }} ファイル名:main.c #highlight(c){{ #include<stdio.h> #include "hogehoge.h" // hogehoge.hをインクルードするとfuncを使えるようになる int main(void) { func("hogehoge"); // hogehoge.cの関数を使う printf("Direct Access lastParam %s\n", lastParam); // hogehoge.cの変数にアクセス func("mogemoge"); printf("Direct Access lastParam %s\n", lastParam); return 0; } }} 実行結果 #highlight(c){{ Welcome!! hogehoge Direct Access lastParam hogehoge Welcome!! mogemoge Direct Access lastParam mogemoge }} *** 変数の宣言 #highlight(c){{ int i; int i=0; int x=0,y=0; }} *** 配列の宣言 #highlight(c){{ int intAry[4]; int intAry2[4] = {1,2,3,4}; int intAry3[4] = {0};// 全て0で初期化 int intAry4[4][3] = {0}; // 二次元配列 } *** ポインタ変数の宣言 #highlight(c){{ int* pIntValue; }} *** ポインタ(アドレス)を取得 #highlight(c){{ int* pIntValue = &intValue; // &変数名 int* pIntAry = intAry; // 配列の添字を書かないとポインタになる int* pIntAry2 = &intAry[0]; // 配列の先頭の要素のポインタも同じ }} *** ポインタから実体を参照 #highlight(c){{ int intValue = *pIntValue; int intValue = pIntValue[0]; // ポインタでも添え字を付けると実体になる char c = *str; char c = str[0]; }} *** メモリをコピーする #highlight(c){{ // パラメータ // コピーされるアドレス,コピー元のアドレス,コピーするサイズ // #include<string.h> 必要 memcpy(intAry[4], &intAry2[0], sizeof(intAry)); }} *** 数値を文字列に変換する #highlight(c){{ char str[4]; // \0の分が必要なので1文字分多く確保する int a = 100; sprintf(str, "%d", a); printf("%d\n", a); // 数値を標準出力に出力する際よく使われる // #include <stdlib.h> 必要 itoa(a, str, 10); // 10進数 itoa(a, str, 8); // 8進数 itoa(a, str, 16); // 16進数 }} *** 文字を数値に変換する #highlight(c){{ // #include <stdlib.h> 必要 int a = atoi(str); }} *** fscanf ファイルから一行ずつ読み込んでフォーマットにしたがって変数に値を格納する #highlight(c){{ int a; int b; char* str[100]; while (fscanf(fp, "%s %d %d", str, &a, &b) != EOF) { printf("%s %d %d\n", str, a, b); } }} *** アフィリエイト &amazon2() ここまで

表示オプション

横に並べて表示:
変化行の前後のみ表示: