![]() |
![]() |
![]() |
変数の型
これまでC言語のint型をgint、char型をgcharなどと使って来たが、 ここでGLibリファレンス・マニュアルから確認してみようと思う。
| GLib | C言語 | 説明 | 最小値 | 最大値 |
| gboolean | - | TRUEまたはFALSE | - | - |
| gpointer | * | ポインタ | - | - |
| gconstpointer | const * | constなポインタ | - | - |
| gchar | char | 文字 | - | - |
| guchar | unsigned char | 符号無し文字 | - | - |
| gint | int | 整数 | G_MININT | G_MAXINT |
| guint | unsigned int | 符号無し整数 | 0 | G_MAXUINT |
| gshort | short | int型より大きくはない | G_MINSHORT | G_MAXSHORT |
| gushort | unsigned short | 符号無しshort | 0 | G_MAXUSHORT |
| glong | long | int型より小さくはない | G_MINLONG | G_MAXLONG |
| gulong | unsigned long | 符号無しlong | 0 | G_MAXULONG |
| gfloat | float | 実数 | -G_MAXFLOAT | G_MAXFLOAT |
| gdouble | double | floatより高精度な実数 | -G_MAXDOUBLE | G_MAXDOUBLE |
| gint8 | - | 8bit整数 | G_MININT8 | G_MAXINT8 |
| guint8 | - | 符号無しgint8 | G_MINUINT8 | G_MAXUINT8 |
| gint16 | - | 16bit整数 | G_MININT16 | G_MAXINT16 |
| guint16 | - | 符号無しgint16 | G_MINUINT16 | G_MAXUINT16 |
| gint32 | - | 32bit整数 | G_MININT32 | G_MAXINT32 |
| guint32 | - | 符号無しgint32 | G_MINUINT32 | G_MAXUINT32 |
| gint64 | - | 64bit整数 | G_MININT64 | G_MAXINT64 |
| guint64 | - | 符号無しgint64 | G_MINUINT64 | G_MAXUINT64 |
Visual Basic 6.0ではboolean型が有ったので、gbooleanを使うのは少し懐かしい。 ちなみにC言語ではintで代用していた。
g_strdup
GLibで提供されている関数を少し紹介してみる。

|
gchar *str; str = g_strdup("Hello World"); g_print( "%s\n", str ); g_free(str); |
文字列を新しく確保した領域にコピーする。
g_strdup_printf

|
int i; for( i = 0; i < 10; ++i ){ gchar *str; str = g_strdup_printf( "text:%d", i ); g_print( "%s\n", str ); g_free( str ); } |
文字列に換算指定子を入れる事ができる。
g_strsplit

|
const gchar *string = "This is a sample string."; gchar **str; int i; str = g_strsplit( string, " ", 0 ); for( i = 0; str[i] != NULL; ++i ){ g_print( "%s\n", str[i] ); } g_strfreev( str ); |
第1引数:入力文字列
第2引数:区切り文字
第3引数:最大分割数(1より小さい値を指定すると、入力文字列を完全に分割する)
戻り値:生成した文字列の配列(最後はNULLで終わる)
g_new0

|
#define ARRAY_SIZE 10 int array[ARRAY_SIZE] = { 11, 5, 8, 16, 9, 1, 21, 10, 3, 17 }; gint *g_array; int i; g_array = g_new0( gint, ARRAY_SIZE ); for( i = 0; i < ARRAY_SIZE; ++i ){ g_array[i] = array[i]; g_print( "%d\n", g_array[i] ); } g_free( g_array ); |
第1引数:生成するデータ型
第2引数:データ数
戻り値:確保した領域の先頭アドレス
g_free

メモリ領域を解放する。
g_strfreev

g_strsplitなどで確保された文字列の配列領域を解放する。