c语言提供的关键字

1.关键字只能用c语言提供的,关键字不能自己创建,

2.不能作为变量名

3.常用关键字

void char  int const float double  short long  enum   

if else do while for break continue default  switch  case 

goto return register  signed unsigned sizeof   static  struct  typedef  union  volatile 


 auto:每个局部变量都是auto修饰的

int main()
{ 
	auto int a = 0;//局部变量自动创建,自动销毁,所以局部变量前的auto省略掉了
	//auto 在新的c语言语法中有其他的用法---后续更新
	printf("%d", a);
	return 0;
}

extern:用来声明外部符号(全局变量在整个工程中都可以使用)

如:声明全局变量

 如:声明函数


register:寄存器关键字

int main()
{
	register int a = 10;//建议a的值存放在寄存器中(大量频繁被使用的数据放到寄存器中)
	//计算机中数据的存储可以存放到:网盘(如:某网盘2T-免费),硬盘(500G-自购),内存(8G-16G),高速缓存(几十MB),寄存器(更小)中
	//越往后速度越快,空间越小
	return 0;
}


static:1.修饰局部变量

//static -静态的
	//1.修饰局部变量
	//2.修饰全局变量
	//3.修饰函数
void test()
{
	static int a = 1;//static修饰局部变量,改变了局部变量的生命周期
	a++;
	printf("%d", a);
}
int main()
{
	int i;
	for (i = 1; i < 10; i++)
	{
		test();
	}
	return 0;
}

输出结果为2~11依次输出

如果变量a的数据类型是int,输出结果为:10个2

static修饰的变量,在进入函数时创建变量,在出函数时不销毁变量,所以导致以上俩种输出结果

内存划分为3个区域

栈区局部变量
函数的参数
堆区

动态内存分配

malloc/free/calloc/realloc

静态区全局变量
static修饰的静态变量

 2.static修饰全局变量,使得这个全局变量只能在自己所在的源文件内部使用,其他源文件无法使用。

3.static修饰函数 (与声明全局变量一样的效果)


typedef:类型重定义

typedef  signed int s_int;//类型重定义,给类型重新起一个名字
int main()
{
	signed int a = 10;
	s_int b = 10;//这俩个变量的数据类型是一样的
	printf("%d", a);
	printf("%d", b);
	return 0;
}

const:修饰什么什么不能被改变

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>


int main()
{
	const int a = 4;
	//a = 5;//error:关键字const修饰的变量不能被修改,这条语句在编译时会报错

//---------------------------------分界线---------------------------------------------
	
	//正门走不通我们翻窗户用指针修改
	int* p = &a;//获取a的地址通过地址修改
	*p = 20;
	printf("%d", a);//可以被执行
	
	//为了防止翻窗户行为,我们可以将
	//const修饰指针变量时,const放在*左边,修饰的是*p指针指向的内容,是不能通过指针改变的		
	const int* pa = &a;
	//*ps = 20;//error:编译会报错,const修饰的指针所指向的地址不能解引用进行修改
	int n = 4;
	pa = &n;//ps的地址可以改变但是不可对ps进行解引用对内容操作

//---------------------------------分界线---------------------------------------------

	//const修饰指针变量时,const放在*右边,表示指针变量不能被改变
	int n1 = 3;
	int a1 = 3;
	int* const pb = &a1;	
	*pb = 20;//解引用pb对内容进行修改是可以操作的
	//pb = &n1;//error:但是不可以对指针pb进行修改


//总结:如果const放在*左边,指针指向的地址内容不能被改变(不能解引用)
//     如果const放在*右边,指针不能被改变,但是可以改变指针指向地址的内容(可以解引用)

	return 0;
}

signed:描述的数字是有符号的


unsigned:描述的数字是无符号的


 union:联合体(共用体)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值