linuxC学习第二十五天

一、关键字(32个)

只说明部分

1、auto

自动声明变量,缺省时编译器默认是auto。

2、register

请求编译器尽可能的将变量存在CPU的内部寄存器中。通过这种方式可以尽可能的提高效率。
要注意的是,内部寄存器有限,不能全部放入寄存器中,因此只是尽可能的存放CPU的内部寄存器中

3、static

修饰静态变量(全局变量,局部变量)———> 静态变量存放在内存的数据区
(1)修饰局部变量:用于函数结束的时候,这个变量的值也不会被销毁,下次调用还可以用这个值,因此静态局部变量只定义一次。很好理解问什么,因为静态变量存放在内存数据区不是栈,因此每次出栈后数据还是存在。
下面为测试代码:

#include <stdio.h>

int j;							//定义全局变量j

int test1()						//测试静态局部变量函数
{	
	int i = 0;
	//static int i = 0; 		//定义静态变量i
	i++;						//将静态变量i自加一
	
	return i;
}

int test2()
{
	j = 0;						//每次调用test2都会给j赋值
	j++;
	
	return j;
}

int main()
{	
	int k,i,j;					//定义循环变量和返回值记录
	
	for(k = 0; k < 10;k++)		//调用test函数10次
	{	
		j = test2();
		i = test1();			//将test函数每一次返回的值给i保存
	}
	
	printf("%d\n",i);			//打印带static i的值结果为10,不带static i的值结果为1
	printf("%d\n",j);			//打印j的值结果为1
	
	return 0;
}

(2)修饰全局变量:令变量只能在此文件中使用,其他文件就算用extern声明也无法使用,这样别人的代码加入的时候就不会有全局变量重名的问题了。

3、加入一张数据类型的图

4、变量的部分规则

1、多个词组成时,每个单词的首字母大写其他小写
2、函数名禁止用于其他之处,例如定义
3、定义变量的同时千万不要忘记初始化
4、不同类型之间的运算,有低精度向高精度扩展

5、sizeof(千万记住这是个关键字,不是函数)

1、怎么记住他是关键字呢
siezof用于计算变量所占空间大小的时候可以省略括号(最好不要省略),而函数是不能省略括号的。注意计算类型大小的时候不能省略括号。
2、关于sizeof计算指针

#include <stdio.h>

int main()
{	
	int *p = NULL;
	printf("%ld\n",sizeof p);			//64位系统下是8,测得是指针的长度
	printf("%ld\n",sizeof *p);			//4,测是是int类型的长度
	
	int a[100];
	printf("%ld\n",sizeof a);			//400,测是是数组的长度
	printf("%ld\n",sizeof a[100]);		//4,测是是数组类型的长度
	printf("%ld\n",sizeof &a);			//64位系统下是8,测是是指向数组首地址的指针长度
	printf("%ld\n",sizeof &a[100]);		//64位系统下是8,测试是指向a[100]的指针的长度
	printf("%ld\n",sizeof(int)*p);
	
	
	int b[100];
	void fun(int b)
	{
		printf("%ld\n",sizeof b);
		
	}
	
	return 0;
}

6、关于unsigned 和signed

1、注意区分unsigned char 和 char
unsigned char 与 signed char 是用来声明数值的占1个字节
char 是用来声明字符的
2、范围问题
unsigned char范围是0~255;
signed char范围是 -128~127。
下面例子就能说明unsigned chaar 和signed char范围的问题

#include <stdio.h>

int main()
{
	signed char a[1000];
	int i;
	
	for(i = 0;i < 1000;i++)						//由于a是signed char范围是-128~127,有效的值只有255个
	{
		a[i] = -1-i;
		
	}
	
	printf("%d\n",strlen(a));					//结果为255
	
	return 0;
}
#include <stdio.h>

int main()
{
	int i = -20;
	unsigned int j = 10;
	
//	printf("%u\n",i+j);				//很大的数
	printf("%d\n",i+j);				//-10
	
	unsigned b = 0;
	printf("%u\n",b);					// =0
	
	for(b = 9;b >= 0;b--)			//无符号数的0在减后会变成一个很大的数,在进行循环,变成了一个死循环
	{
		printf("%u\n",b);
	}
	
	return 0;
}

7、float

没什么好说的大家都认识,只有注意它与0不能之间比较,要看精度,有时候可能无意义。

8、const(很重要的一个关键字)

它用于修饰只读变量。
1、注意在修饰指针的时候如何判断
(1)去掉类型
(2)看与const最接近的是*还是pa;
例如const int pa,修饰的是pa,说明pa指向的内容不能改变,但pa能改变
而 int const pa,修饰的是pa,说明pa指向的内容能改变,但pa不能改变

9、extern

用于变量声明,变量声明没有空间,不能进行赋值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值