Home
News
Forum
Wiki
Blog
Contents
Gallery
Movies
Downloads
About NSL
If you want to see English page, please click "English" Button at Left.
[
タイトル一覧
|
ページ一覧
|
新規
|
単語検索
|
最終更新
|
ヘルプ
]
ObaraC
をテンプレートにして作成
[
トップ
]
[ ]
開始行:
TITLE:C言語
*C言語_オバラのwiki
勘違いや間違い、キティーガイ沙汰な事を書いている可能性(...
**hoge
***ほげほげ
**環境変数の設定
***windows7の場合
マイコンコンピュータ右クリックからシステムの詳細設定~
詳細設定の下に環境変数(N)...がある~
そこで設定~
**DXライブラリの設定
***Visual studio 2008の場合
「文字セット」の項目を「マルチ バイト文字セットを使用する...
~
「構成」~
~
Release~
構成プロパティ → C/C++ → 「コード生成」~
のランタイム ライブラリの項目を「マルチスレッド(/MT)」に...
~
Debug~
ランタイムライブラリの項目を「マルチスレッド デバッグ(/MT...
**予約語
***予約語
void 型の無いことを宣言~
char 1バイト・文字型~
short 2バイト・単精度整数型~
int 4バイト・整数型~
long 4バイト・整数型~
float 4バイト・単精度浮動小数点型~
double 8バイト・倍精度浮動小数点型~
auto 自動変数、関数を抜けるとデータは消去~
static 静的変数、関数を抜けてもデータが残る~
const 書き換え不可、宣言時に格納~
signed 符号付変数を指定~
unsigned 符号なし変数を指定~
extern 異なるファイルから使用する際に宣言~
volatile コンパイラに最適化させない~
register レジスタに割り当て高速化、C++では使用できる...
return 関数から抜ける、戻り値を指定できる~
goto 指定ラベルへジャンプ~
if 条件分岐~
else if文の条件分岐~
switch 条件分岐~
case switchでの条件分岐~
default switchでのcaseに当てはまらない条件~
break ブロックから抜ける~
for ループ文(初期化;終了条件;変数更新)~
while ループ文(終了条件)~
do do-while文で使用する、処理の開始~
continue ループ文の先頭に戻る~
typedef 型に別名をつける、意味は変わらず~
struct 構造体、変数をまとめて宣言するユーザー定義型~
enum 列挙型、整数の割り当て~
union 共用体、変数をまとめて宣言できるが、アドレス...
sizeof 変数のサイズを取得~
**bullet
***bulletの導入
公式から落としてきたbulletのSDKを解凍すると、中にlibとい...
bullet-2.xx → msvc → 2008 (自分の場合) → lib →...
となりにreleaseもあるんじゃね(たぶん)~
あんまりいじってないから知らん~
を指定する~
~
ヘッダーファイルはbullet-2.xx → srcに入っている~
**アラインメント
***構造体に関して
たとえば~
typedef struct Hoge~
{
int int1;
double double1;
char char1;
double double2;
}Hoge;
があったとして~
サイズがいくつになるか~
[obara@TandemMirror arainmento]$ ./a.out ~
24~
stHoge 0xbfde0e2c ~
int1 0xbfde0e2c ~
double1 0xbfde0e30 ~
char1 0xbfde0e38 ~
double2 0xbfde0e3c ~
~
ってな感じになりchar1とdouble2の間に隙間が出来た~
これはコンパイラが勝手に境界調整(アラインメント)して適...
CPUによってパディングのやり方が違うらしい~
~
パディングには下手に触ってはいけないらしい~
**malloc calloc realloc
***malloc
voidのポインタ返ってくる
いじょ
***calloc
voidのポインタが返ってくる
んで中のビットが全部0になっているらしい
いじょ
***realloc
void realloc(変更したいポインタ,どんくらいヒープするかの...
あんまり頻繁に使わない方がよさげ
頻繁に巨大な領域をreallocで伸ばすと時間もかかりヒープの中...
***フラグメンテーション
てきとーにメモリの確保、開放を繰り返すとメモリが分断され...
この現象をフラグメンテーションというらしい
(メモリはいっぱいあるぜ 気にするこたぁねぇw)
**インクルード!ガーーーードッ!!
***再定義防止、無駄なプリコンパイルを減らす
ヘッダーに
#ifndef OBARA_H
#define OBARA_H
~~
#endif
と最初と最後に書いて置くだけで再定義防止、とビルド時間を...
ifndef とは逆にifdefというのももある
ifndefとは逆で、ifdefは定義されていればendifまでを実行す...
なにやらプリコンパイル時に必要のないコードはコンパイルし...
**bitを利用したフラグ管理
***unsignedを使う
まず
#define aFlag (1)~
#define bFlag (1 << 2)~
#define cFlag (1 << 3)~
とフラグをどのように使うかマクロ定義や定数で定義しておく...
unsigned Flag = 0;//フラグを記録させる変数~
unsignedを付けないと何かで右シフトした時、補数の1がシフ...
必要な関数は3つ~
セット、リセット、チェック~
void set(unsigned f)~
{~
Flag |= f;
}~
void reset(unsigned f)~
{~
Flag &= ~f;
}~
//~はビット反転~
int check(unsigned f)~
{~
return ((Flag & f) == f)? 1 : 0;
}~
メモリの節約、可読性の向上~
たとえば~
if(check(aFlag|bFlag|cFlag))~
{~
}else~
{~
}~
**ポインタとconst
***構造体
構造体~
typedef struct dororo{~
int hoge;
int tara;
int pong;
}~
があるとして、
const dororo *a = (dororo*)malloc(sizeof(dororo) * i);~
という宣言をしてもメンバに値を代入できる~
dororoはポインタなのでconstがついていたら a=nanntyara ...
当然ではあるがconstは修飾した変数そのものにだけ有効である
***javaの場合
javaの場合も同様~
final hoge[5][5] = {
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5}
};
~
とあるとするとhogeは変更できないが、hoge[]とhoge[][]は弄...
**共用体
***?
よくわからん~
メモリの節約はできそうだ
**Lua
***今日からLuaなるスクリプトの勉学に励もうと思いました
LuaさんはC言語に組み込む目的でRoberto Ierusalimschyさんと...
ガベージコレクションはインクリメンタルGCでライセンスはMIT...
**luaの使い方
visualstudioのプロパティ→構成プロパティ→c/c++→全般→追加の...
全般→リンカーで追加のライブラリディレクトリへluaのlibをを...
リンカー→入力の追加の依存ファイルへlua5.1.libを追加する
するとvisualstudioでc++にluaを使えるようになる
**C++
***
**クソゲ
***フレーム
毎回呼ぶようなクラスにstaticなフレームを数えるunsignedを...
getしてフレームを数える
**MSVS
***デバッグモード
_DEBUGが定義される
ifndefで囲っておけば、debugビルド時のみの処理を書ける
終了行:
TITLE:C言語
*C言語_オバラのwiki
勘違いや間違い、キティーガイ沙汰な事を書いている可能性(...
**hoge
***ほげほげ
**環境変数の設定
***windows7の場合
マイコンコンピュータ右クリックからシステムの詳細設定~
詳細設定の下に環境変数(N)...がある~
そこで設定~
**DXライブラリの設定
***Visual studio 2008の場合
「文字セット」の項目を「マルチ バイト文字セットを使用する...
~
「構成」~
~
Release~
構成プロパティ → C/C++ → 「コード生成」~
のランタイム ライブラリの項目を「マルチスレッド(/MT)」に...
~
Debug~
ランタイムライブラリの項目を「マルチスレッド デバッグ(/MT...
**予約語
***予約語
void 型の無いことを宣言~
char 1バイト・文字型~
short 2バイト・単精度整数型~
int 4バイト・整数型~
long 4バイト・整数型~
float 4バイト・単精度浮動小数点型~
double 8バイト・倍精度浮動小数点型~
auto 自動変数、関数を抜けるとデータは消去~
static 静的変数、関数を抜けてもデータが残る~
const 書き換え不可、宣言時に格納~
signed 符号付変数を指定~
unsigned 符号なし変数を指定~
extern 異なるファイルから使用する際に宣言~
volatile コンパイラに最適化させない~
register レジスタに割り当て高速化、C++では使用できる...
return 関数から抜ける、戻り値を指定できる~
goto 指定ラベルへジャンプ~
if 条件分岐~
else if文の条件分岐~
switch 条件分岐~
case switchでの条件分岐~
default switchでのcaseに当てはまらない条件~
break ブロックから抜ける~
for ループ文(初期化;終了条件;変数更新)~
while ループ文(終了条件)~
do do-while文で使用する、処理の開始~
continue ループ文の先頭に戻る~
typedef 型に別名をつける、意味は変わらず~
struct 構造体、変数をまとめて宣言するユーザー定義型~
enum 列挙型、整数の割り当て~
union 共用体、変数をまとめて宣言できるが、アドレス...
sizeof 変数のサイズを取得~
**bullet
***bulletの導入
公式から落としてきたbulletのSDKを解凍すると、中にlibとい...
bullet-2.xx → msvc → 2008 (自分の場合) → lib →...
となりにreleaseもあるんじゃね(たぶん)~
あんまりいじってないから知らん~
を指定する~
~
ヘッダーファイルはbullet-2.xx → srcに入っている~
**アラインメント
***構造体に関して
たとえば~
typedef struct Hoge~
{
int int1;
double double1;
char char1;
double double2;
}Hoge;
があったとして~
サイズがいくつになるか~
[obara@TandemMirror arainmento]$ ./a.out ~
24~
stHoge 0xbfde0e2c ~
int1 0xbfde0e2c ~
double1 0xbfde0e30 ~
char1 0xbfde0e38 ~
double2 0xbfde0e3c ~
~
ってな感じになりchar1とdouble2の間に隙間が出来た~
これはコンパイラが勝手に境界調整(アラインメント)して適...
CPUによってパディングのやり方が違うらしい~
~
パディングには下手に触ってはいけないらしい~
**malloc calloc realloc
***malloc
voidのポインタ返ってくる
いじょ
***calloc
voidのポインタが返ってくる
んで中のビットが全部0になっているらしい
いじょ
***realloc
void realloc(変更したいポインタ,どんくらいヒープするかの...
あんまり頻繁に使わない方がよさげ
頻繁に巨大な領域をreallocで伸ばすと時間もかかりヒープの中...
***フラグメンテーション
てきとーにメモリの確保、開放を繰り返すとメモリが分断され...
この現象をフラグメンテーションというらしい
(メモリはいっぱいあるぜ 気にするこたぁねぇw)
**インクルード!ガーーーードッ!!
***再定義防止、無駄なプリコンパイルを減らす
ヘッダーに
#ifndef OBARA_H
#define OBARA_H
~~
#endif
と最初と最後に書いて置くだけで再定義防止、とビルド時間を...
ifndef とは逆にifdefというのももある
ifndefとは逆で、ifdefは定義されていればendifまでを実行す...
なにやらプリコンパイル時に必要のないコードはコンパイルし...
**bitを利用したフラグ管理
***unsignedを使う
まず
#define aFlag (1)~
#define bFlag (1 << 2)~
#define cFlag (1 << 3)~
とフラグをどのように使うかマクロ定義や定数で定義しておく...
unsigned Flag = 0;//フラグを記録させる変数~
unsignedを付けないと何かで右シフトした時、補数の1がシフ...
必要な関数は3つ~
セット、リセット、チェック~
void set(unsigned f)~
{~
Flag |= f;
}~
void reset(unsigned f)~
{~
Flag &= ~f;
}~
//~はビット反転~
int check(unsigned f)~
{~
return ((Flag & f) == f)? 1 : 0;
}~
メモリの節約、可読性の向上~
たとえば~
if(check(aFlag|bFlag|cFlag))~
{~
}else~
{~
}~
**ポインタとconst
***構造体
構造体~
typedef struct dororo{~
int hoge;
int tara;
int pong;
}~
があるとして、
const dororo *a = (dororo*)malloc(sizeof(dororo) * i);~
という宣言をしてもメンバに値を代入できる~
dororoはポインタなのでconstがついていたら a=nanntyara ...
当然ではあるがconstは修飾した変数そのものにだけ有効である
***javaの場合
javaの場合も同様~
final hoge[5][5] = {
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5}
};
~
とあるとするとhogeは変更できないが、hoge[]とhoge[][]は弄...
**共用体
***?
よくわからん~
メモリの節約はできそうだ
**Lua
***今日からLuaなるスクリプトの勉学に励もうと思いました
LuaさんはC言語に組み込む目的でRoberto Ierusalimschyさんと...
ガベージコレクションはインクリメンタルGCでライセンスはMIT...
**luaの使い方
visualstudioのプロパティ→構成プロパティ→c/c++→全般→追加の...
全般→リンカーで追加のライブラリディレクトリへluaのlibをを...
リンカー→入力の追加の依存ファイルへlua5.1.libを追加する
するとvisualstudioでc++にluaを使えるようになる
**C++
***
**クソゲ
***フレーム
毎回呼ぶようなクラスにstaticなフレームを数えるunsignedを...
getしてフレームを数える
**MSVS
***デバッグモード
_DEBUGが定義される
ifndefで囲っておけば、debugビルド時のみの処理を書ける
ページ名:
サイト内 検索
高度な検索
ログイン
ユーザー名:
パスワード:
パスワード紛失
新規登録
サブ メニュー
新着情報
Books
リンク
サイトマップ
e-Learning
TUIS 認証局証明書
ミニカレンダー
2024年 5月
日
月
火
水
木
金
土
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<今日>
オンライン状況
77 人のユーザが現在オンラインです。 (11 人のユーザが xpwiki を参照しています。)
登録ユーザ: 0
ゲスト: 77
もっと...
アクセスカウンタ
今日 :
昨日 :
総計 :
Powered by XOOPS Cube 2.1© 2001-2006
XOOPS Cube Project
Design by
XoopsDesign.com