笔记 c语言关键字(1)

本文介绍了C语言中的标准输入输出文件,如stdin、stdout和stderr,以及如何使用printf和scanf进行数据交互。同时,讲解了sizeof运算符用于计算数据类型或变量的大小,以及typedef创建类型别名的方法。extern关键字的使用则强调了外部变量的声明和引用。文章还通过示例代码展示了这些概念的实际应用。
摘要由CSDN通过智能技术生成

c语言提供的标准文件

通常把显示器称为标准输出文件,printf是向这个文件输出数据。

通常把键盘称为标准输入文件,scanf是向这个文件读取数据。

常见硬件设备所对应的文件
文件
stdin标准输入文件,一般指键盘,scanf(),getchar(),等函数默认从stdin获取输入。
stdout

标准输出文件,一般指显示器,printf(),putchar(),等函数默认向stdout输出数据。

stderr标准错误文件,一般指显示器,perror()等函数默认向stderr输出数据。
stdprn标准打印文件,一般指打印机。

缓冲区:在程序执行时,所提供的的一块储蓄空间,可暂时用来存放准备执行的数据。

1.sizeof

计算类型的大小或变量的大小(字节个数)

int main()
{
	int a = 10;
	char* cp = NULL;
	double* dp = NULL;
	char str[10];
	int ar[] = { 12,34,56,78,19 };

	printf("%d\n", sizeof(a));//4
	printf("%d\n", sizeof(double*));//4
	printf("%d\n", sizeof(dp));//4
	printf("%d\n", sizeof("tulun"));//6
	printf("%d\n", sizeof(ar));//20
	printf("%d\n", sizeof(void*));//4 无类型指针大小为四字节

	return 0;
}

2.typedef

typedef是在C语言中允许为一个数据类型起一个新的别名,它本身是一种储蓄类的关键字,不能与auto,extern,mutable,static,register共同出现在一个表达式中。

//所有的合法定义都可以被typedef转换为类型
typedef unsigned int UNIT;
typedef int* PINT;
typedef int Array[10];

int main()
{
	UNIT a = 10, b = 20;
	PINT p = NULL, s = NULL;
	Array ar = { 12,23,34 }, br = { 1,2,3 };

	return 0;
}

typedef unsigned char u_int8;
typedef unsigned short u_int16;
typedef unsigned int u_int32;
typedef unsigned long long u_int64;

int main()//为已有的类型取个别名
{
	unsigned char x;
	u_int8 x1;
	unsigned short a;
	u_int16 a2;
}

3.extern关键字

extern用在全局变量或函数的申明前,用来说明“此变量/函数是在别处定义的,要在此处引用”

定义和声明:

定义是指为这个变量分配一块内存并给他取一个名字,这个名字就是变量名,这个名字一旦与这块内存匹配起来,他们就不能在分离,并且这块内存的位置也不能改变,一个变量在一定的区域内只能定义一次,如果多次定义编译器会提示你重复定义一个变量或对象

声明,告诉编译器,这个名字已经匹配到一块内存上了

告诉编译器,这个名字我先预定了,别的地方不能使用它作为变量名。

声明和定义的区别:定义创造了对象并给对象一块内存,声明有时候不分配内存空间

int g_max = 10;

void fun()
{
	int x = g_max;
	extern int g_min;//如不声明则无法编译通过,因为程序从上到下进行编译,g_min在程序末尾
	x + g_min;
}

int main()
{
	int a = g_max;
	extern int g_min;
	a = g_min;

	return 0;

}

int g_min = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值