●型キャスト
「型キャスト演算子」を使うと,ある型のデータを強制的に別のデータ型に変換することが出来る。
(変換後の型)元のデータ
|
例:
int x; double * dp = (double*)&x; /* int*型ポインタを強制的にdouble*型ポインタに変換している。通常はこのような型変換は危険。 */●変数やデータ型のサイズ(バイト数)の取得 〜 sizeof 演算子
sizeof( データ型名 ) |
●メモリの動的割り当て(dynamic memory allocation)
メモリを必要に応じて割り当てるために,malloc()関数が利用できる。また,割り当てたメモリはfree()関数で解放できる。

#include <stdio.h>
#include <stdlib.h>
struct Cell {
int data;
struct Cell * next;
};
typedef struct Cell Cell;
int main() {
int i, n = 0;
Cell * p = NULL;
Cell * pre = NULL; // ひとつ前に生成したセルのアドレス(セル生成時に利用)
Cell start; // 便宜的に用意したスタートセル
start.data = 0; start.next = NULL;
printf( "num of cell : " ); scanf( "%d", &n );
pre = &start;
for( i = 0; i < n; i++ ) {
p = (Cell*)malloc( sizeof(Cell) ); // Cell型変数用のメモリ領域を取得
if( p == NULL ) break;
p->data = i;
p->next = NULL;
pre->next = p;
pre = p;
}
p = start.next;
while ( p != NULL ) {
printf( "%d\n", p->data );
p = p->next;
}
/* 動的に割り当てたCell型変数をすべて解放する。 */
p = start.next;
while ( p != NULL ) {
Cell * tp = p;
p = p->next;
free(tp);
}
getchar();getchar();
return 0;
}