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;