C言語データ型まとめ
5569 ワード
一、基本データ型1.int 1>long int、long:8バイト%ld 2>short int、short:2バイト%d%i 3>unsigned int、unsigned:4バイト%zd 4>signed int、signed、int:4バイト%d%i
2.floatdouble 1>float:4バイト%f 2>double:8バイト%f
3.char 1>1バイト%c%d 2>charタイプメモリに保存されているASCII値'A'-->65
二、構造タイプ1.配列1>同じタイプのデータのみからなる2>定義:データ型配列名[要素数];
2.構造体1>異なるタイプのデータから構成することができる2>まずタイプを定義し、次にタイプ定義変数を利用する
三、ポインタタイプ1.変数の定義int*p;
2.間接操作変数の値int a=10;p = &a; *p = 20;
四、列挙タイプ使用の場合:1つの変数がいくつかの固定値しか許可されていない場合
変数の役割ドメイン
変数の役割ドメインによってグローバル変数 定義:関数の外側で定義された変数 役割ドメイン:変数を定義する行からファイルの最後まで(後のすべての関数で共有できる) ライフサイクル:プログラムが起動するとストレージスペースが割り当てられ、プログラムが終了すると が破棄されます.デフォルトの初期値は0 です.
ローカル変数 定義:関数(コードブロック)内部で定義された変数(関数パラメータを含む) 役割ドメイン:変数を定義する行からコードブロック終了 までライフサイクル:変数を定義行から記憶領域の割り当てを開始し、コードブロックが終了すると が回収される.固定初期値 なし
こうぞうたい
構造体を定義する方法手順
//1.struct Person{//内の3つの変数を定義します.構造体のメンバーまたは属性int ageと呼ばれます.//年齢double height;//身長char*name;//名前};//2.構造体のタイプに応じて、構造体変数(ストレージスペースを実際に割り当てる)struct Personp={20,1.55,「jack」}を定義する.
注意事項
構造体のメモリ割り当ては、整列アルゴリズムに従います.すなわち、構造体が占有する記憶領域は、最大メンバーバイト数の倍数でなければなりません.
構造体の3つの定義方法定義型定義変数 型を定義するとともに変数 を定義する.構造体変数を定義第3の方式、匿名定義
構造体タイプの役割ドメインは関数の外側に定義されます.グローバル有効(定義タイプの行からファイルの最後まで) は、関数(コードブロック)の内部で定義されます.ローカル有効(定義タイプの行からコードブロックの終了まで) こうぞうたいはいれつ
構造体へのポインタ
構造体と関数
構造体のネスト
2.floatdouble 1>float:4バイト%f 2>double:8バイト%f
3.char 1>1バイト%c%d 2>charタイプメモリに保存されているASCII値'A'-->65
二、構造タイプ1.配列1>同じタイプのデータのみからなる2>定義:データ型配列名[要素数];
2.構造体1>異なるタイプのデータから構成することができる2>まずタイプを定義し、次にタイプ定義変数を利用する
三、ポインタタイプ1.変数の定義int*p;
2.間接操作変数の値int a=10;p = &a; *p = 20;
四、列挙タイプ使用の場合:1つの変数がいくつかの固定値しか許可されていない場合
変数の役割ドメイン
変数の役割ドメインによって
#include
int age;
void test()
{
int age;
age = 10;
}
int main()
{
printf("%d
", age);// 0
int age = 20;
printf("%d
", age);// 20
test();
printf("%d
", age);// 20
return 0;
}
こうぞうたい
構造体を定義する方法手順
//1.struct Person{//内の3つの変数を定義します.構造体のメンバーまたは属性int ageと呼ばれます.//年齢double height;//身長char*name;//名前};//2.構造体のタイプに応じて、構造体変数(ストレージスペースを実際に割り当てる)struct Personp={20,1.55,「jack」}を定義する.
/*
:
:
*/
#include
int main()
{
// 1.
struct Person
{ // 3 ,
int age; //
double height; //
char *name; //
};
// 2. ,
struct Person p = {20, 1.55, "jack"};
p.age = 30;
p.name = "rose";
printf("age=%d, name=%s, height=%f
", p.age, p.name, p.height);
/*
struct Person p2;
p2 = {30, 1.67, "jake"};
*/
// ,
// 1
struct Person p2 = {.height = 1.78, .name="jim", .age=30};
// 2
p2.name = "jim";
p2.height = 1.78;
p2.age = 25;
return 0;
}
注意事項
構造体のメモリ割り当ては、整列アルゴリズムに従います.すなわち、構造体が占有する記憶領域は、最大メンバーバイト数の倍数でなければなりません.
struct Student
{
int age;// 4
char *name; // 8
};
struct Student stu;
// char* 8 , , s 16 = 8*2
int s = sizeof(stu);
構造体の3つの定義方法
// 1.
struct Student
{
int age;
double height;
char *name;
};
// 2.
struct Student stu = {20, 1.78, "jack"};
// ,1 2
struct Student
{
int age;
double height;
char *name;
} stu;
struct {
int age;
char *name;
} stu;
構造体タイプの役割ドメイン
struct RankRecord
{
int no; // 4
int score; // 4
char *name; // 8
};
/*
struct RankRecord r1 = {1, "jack", 5000};
struct RankRecord r2 = {2, "jim", 500};
struct RankRecord r3 = {3, "jake",300};
*/
struct RankRecord records[3] =
{
{1, "jack", 5000},
{2, "jim", 500},
{3, "jake",300}
};
records[0].no = 4;
//
//records[0] = {4, "rose", 9000};
構造体へのポインタ
/*
1.
struct Student *p;
2.
1> (*p).
2> p->
*/
struct Student
{
int no;
int age;
};
//
struct Student stu = {1, 20};
// p struct Student
struct Student *p;
// p stu
p = &stu;
p->age = 30;
//
printf("age=%d, no=%d
", stu.age, stu.no);
//
printf("age=%d, no=%d
", (*p).age, (*p).no);
//
printf("age=%d, no=%d
", p->age, p->no);
構造体と関数
#include
struct Student
{
int age;
int no;
};
// ,
//
void test(struct Student s)
{
s.age = 30;
s.no = 2;
}
//
void test2(struct Student *p)
{
p->age = 15;
p->no = 2;
}
void test3(struct Student *p)
{
struct Student stu2 = {15, 2};
p = &stu2;
p->age = 16;
p->no = 3;
}
int main()
{
struct Student stu = {28, 1};
//test(stu);
//test2(&stu);
test3(&stu);
printf("age=%d, no=%d
", stu.age, stu.no);
return 0;
}
構造体のネスト
#include
int main()
{
struct Date
{
int year;
int month;
int day;
};
//
struct Student
{
int no; //
struct Date birthday; //
struct Date ruxueDate; //
//
//struct Student stu;
};
struct Student stu = {1, {2000, 9, 10}, {2012, 9, 10}};
printf("year=%d,month=%d,day=%d
", stu.birthday.year, stu.birthday.month, stu.birthday.day);
return 0;
}