C语言学习4

本文介绍了C语言中的常见关键字如typedef(类型定义)、static(静态变量)、define(宏定义)以及它们在内存管理和作用域方面的应用。还讨论了enum(枚举)、extern(外部变量)和register(寄存器)的概念。
摘要由CSDN通过智能技术生成

目录

一、常见关键字

typedef--改名卡

static关键字

#define--定义标识符常量--#define MAX 100

#define 可以定义宏-带参数


一、常见关键字

注意define不是关键字

auto:自动--局部变量 auto int a=0;局部变量都会有自动,都是自动变量

enum:枚举

extern:声明外部变量

register:

计算机存储数据
寄存器访问速度越快。空间越来越小
高速缓存
内存8G、4G、16G
硬盘500G越慢,空间越来越大

从内存中拿出数据,给CPU中央处理器

随着发展,CPU处理的速度越来越快,但是内存的访问速度跟不上,所以CPU以后从寄存器里面拿数据,没有所要数据的话再依次从高速缓存往下拿取数据。

    int a=0;//局部变量默认省略auto--自动变量 //auto int a=0; 
    register int b=0;//建议把b定义成寄存器变量 

typedef--改名卡

    typedef--类型定义--类型重定义 

int实际上是signed int
    typedef unsigned int u_int;//把unsigned int重新取名为u_int---改名卡 
    unsigned int num =20; 
    u_int num=0; 

static关键字

    //static 修饰局部变量
    //局部变量的声明周期变长
    //static 修饰全局变量 
    static int a=1;//a是一个静态的局部变量 ---保存上一次的值 

void test()
{
	//static 修饰局部变量
	//局部变量的声明周期变长
	//static 修饰全局变量 
	static int a=1;//a是一个静态的局部变量 ---保存上一次的值 
	a++;
	printf("a=%d\n",a);
}
int main()
{
	int i=0;
	while(i<5)
	{
	test();
	i++;
	}
	return 0;
 } 

//    1、static 修饰局部变量
//    //局部变量的声明周期变长
//    2、static 修饰全局变量 
// 改变了变量的作用域-让静态的全局变量智能只能在自己所在的源文件内部使用
// 出了源文件就没法再使用 
//    3、static修饰函数 
//也是改变了函数的作用域--不准确 
// static修饰函数--改变了函数的链接属性 
//外部链接属性-->内部链接属性 
//一个全局变量被static修饰,使得这个全局变量智能在本源文件内使用
//不能在其他源文件内使用 

//main.c可以运行
int main()
{
	extern int g_val;
	printf("g_val=%d\n",g_val);
	return 0;
 } 

//other.c
int g_val=2023;

如果把other.c里面的语句改成static int g_val=2023;会报错

//main.c
extern int Add(int ,int);  
int main()
{
	int a=10;
	int b=20;
	int sum=Add(a,b);
	printf("sum=%d\n",sum);
	return 0;
 } 
 
//add.c
 int Add(int x,int y)
 {
 	int z=x+y;
 	return z;
 }

#define--定义标识符常量--#define MAX 100

#define MAX 100
int main()
{
    int a=MAX;//遇到MAX即为100
    printf("a=%d\n",a); 
    return 0;
}

#define MAX 100
int main()
{
	int a=MAX;
	printf("a=%d\n",a); 
	return 0;
}

#define 可以定义宏-带参数

//宏的定义
#define MAX(X,Y) (X>Y?X:Y)

#include <stdio.h>
#include <string.h> //有此句以后不会出现警告 
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)
//函数的实现
int Max(int x,int y)
{
	if(x>y)
	return x;
	else
	return y;
} 
int main()
{
	int a=10;
	int b=20;
	//函数 
	int max1=Max(a,b); 
	printf("max1=%d\n",max1); 
	//宏的定义方式 
	int max2=MAX(a,b);
	printf("max2=%d\n",max2);	
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值