C言語の基礎(パート2)

1.構造タイプ

#include <stdio.h>

struct date {
    
    
	int year;
	int month;
	int day;
};

int main() {
    
    
	struct date today = {
    
    2021, 03, 17};
	struct date tomorrow = today;
	tomorrow.day = 18;

	printf("Today is %i-%i-%i\n", today.year, today.month, today.day);
	printf("Tomorrow is %i-%i-%i\n", tomorrow.year, tomorrow.month, tomorrow.day);
	return 0;
}

出力:

Today is 2021-3-17
Tomorrow is 2021-3-18

知識のポイント:1。構造は配列とは異なり、その内容はtomorrow.day = 18のように変更でき、配列の内容は変更できません。

構造体関数
前述のように、関数の戻り値は数値であるため、複数の値を返す必要がある場合はポインターを使用します。上記の例を変更してみましょう

2.カスタムデータ型

//case 1
typedef int new_int;
//case 2
typedef struct Adate{
    
    
	int month;
	int day;
	int year;
} Date;
//case 3
typedef struct {
    
    
	int month;
	int day;
	int year;
} Date;


知識のポイント:typedefは、既存のデータ型の新しい名前を宣言します。
たとえば、ケース1の場合、new_intを使用して、後続のプログラムで整数変数を定義できます。
ケース2は、構造体のAdateタイプのエイリアスを作成することです。その後、Dateを使用してこのタイプを直接定義できます。(struct Adateが型であり、Adateだけが型ではないことに注意してください。したがって、typedefを使用すると、型名が簡略化されます)
ケース3は、型に直接名前を付けます。

3.マクロ定義

マクロとは何ですか?テキストの置換

#define PI 3.14159

#beginningはコンパイル前処理命令、#defineはマクロの定義、PIはマクロの名前、3.14159はマクロの値です。
もちろん、以下に示すように、事前定義されたマクロもあります。

#include <stdio.h>

int main() {
    
    

	printf("%s\n", __FILE__);
	printf("%d\n", __LINE__);
	printf("%s\n", __DATE__);
	printf("%s\n", __TIME__);
	return 0;
}

出力結果

E:\dustbin\array.c
7
Mar 17 2021
20:40:54

関数のようなマクロを定義することもできます

#include <stdio.h>

#define cube(x) ((x)*(x)*(x))
int main() {
    
    

	printf("%d\n", cube(5));

	return 0;
}

cube(5)は5 * 5 * 5に置き換えられます。ここでの置き換えはテキストの置き換えであるため、置き換え後の操作の優先順位を考慮する必要があります。(xを書く代わりにxに括弧を追加することをお勧めします。 * x * x)

おすすめ

転載: blog.csdn.net/weixin_44823313/article/details/114940509