C言語の強化 (1)

ヒント: 記事を書いた後、目次を自動生成することができます. 生成方法は右のヘルプドキュメントを参照してください.



提示:以下是本篇文章正文内容,下面案例可供参考

1. キーワード

1. volatile
変数の前に追加します。コンパイル時に変数が使用されていなくても、最適化されません。組み込みがよく使用されます。これは、コンパイラが cpu 内に値を直接キャッシュし、cpu 内で値を直接読み取り、ハードウェア IO ポートを繰り返し読み取らないなどの手順を省略できないためです。ただし、IO ポートを繰り返し読み取る必要があります。

C 言語の本では、volatile キーワードを次のように定義しています。

volatile は、その背後で定義された変数がいつでも変更される可能性があることをコンパイラに通知するため、コンパイルされたプログラムがこの変数を保存または読み取る必要があるたびに、コンパイラに変数を最適化しないように指示し、変数メモリ アドレスから直接読み取ります。特別なアドレスへの安定したアクセスを提供できます。

volatile キーワードがない場合、コンパイラは読み取りと格納を最適化し、レジスタ内の値を一時的に使用する可能性があります. この変数が他のプログラムによって更新されると、矛盾が発生します. (簡単に言うと、volatile キーワードはコンパイラのコンパイルの結果に影響します。volatile で宣言された変数は、変数がいつでも変更される可能性があることを意味します。エラーを回避するために、変数に関連する計算に対してコンパイルの最適化を実行しないでください。)

キャッシュ (cache): 本来の意味は、一般的なランダム アクセス メモリ (RAM) よりもアクセス速度が速い高速メモリを指します. 通常、システムのメイン メモリのような DRAM テクノロジは使用されず、高価ですがより高速な SRAM テクノロジが使用されます。キャッシュの設定は、最新のすべてのコンピューター システムの高性能にとって重要な要素の 1 つです。
レジスタ: レジスタは、CPU 内のデータを格納するために使用されるいくつかの小さな記憶域であり、計算に含まれるデータと計算結果を一時的に格納するために使用されます。
2. const
を追加すると、変数は定数になり、変更できなくなります。本来の意図は、変数をフラッシュに配置してメモリを節約することです。

二、構造

構造宣言はスペースを占有せず、スペースはインスタンス化定義の後にのみ占有されます。

struct person wei = {"weidongshan", 40}; この文だけがスペースを割り当てます

1. 通常構造コード

コードは次のとおりです (例)。

/* 打印同学的姓名、年龄 */
struct person {
    
    
	char *name;
	int age;
};

int main( void )
{
    
    
/*	
	char *name = "weidongshan";
	int age = 40;

	char *name2 = "abc";
	int age2 = 10;

	char *name3 = "abc";
	int age3 = 10;
*/	
	struct person wei = {
    
    "weidongshan", 40};
		
	int i;
	
	dong = 123;
	i = 1; 
	i = 2;
	
	a = 1;
	c = 'A';
	buf[99] = 'B';
	
	prvSetupHardware();
	
	printf("sizeof(int) = %d, sizeof(char) = %d\r\n", sizeof(int), sizeof(char));
	printf("sizeof(int *) = %d, sizeof(char *) = %d\r\n", sizeof(int *), sizeof(char *));
	
	//printf("name = %s, age = %d\r\n", name, age);
	printf("name = %s, age = %d\r\n", wei.name, wei.age);
	
	/* 如果程序运行到了这里就表示出错了, 一般是内存不足 */
	return 0;
}

結果:
sizeof(int) = 4, sizeof(char) = 1
sizeof(int *) = 4, sizeof(char *) = 4
name = weidongshan, age = 40

要約する

魏東山の C 言語生放送授業と百度百科事典から学ぶ

おすすめ

転載: blog.csdn.net/lianghuajunone/article/details/123413028