初识c语言2(c语言基础2)

目录

前言

—.常见关键字

1.extern

2.static

1.static修饰局部变量:

 2.static修饰全局变量:

 3.static修饰函数:

二.作用域和生命周期的区别(补充上次没讲的)

三.操作符

总结


前言

这是学习c语言中必须遇到的一些基础知识,我只分享了我觉得重要的一些知识,我给概括了一下,不是很全,希望大家见谅。但若你是小白,会收获满满!!!

—.常见关键字

例如:auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while、inline、restrict

下面是难点举例

1.extern

如果想使用来自其他文件(外部文件)的 全局变量或者函数,先要声明一下,extern是一个关键字,是专门用来声明外部符号的。如下图:

 最后会输出a的值为10.关于extern的用法下面static也有涉及。

2.static

静态的意思,c语言中static可以修饰

1.局部变量2.全局变量3.修饰函数

1.static修饰局部变量:

#include<stdio.h>
void test()
{
	
	 int a = 1;
	a++;
	printf("%d ", a);
}

int main()
{
	int i = 0;
    while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

没有用static修饰的结果是输出十个2。

 而用static修饰以后的结果会发生变化,因为a为局部变量,用static修饰局部变量,其实改变了变量的存储类型,本来是在栈区存储,但后来它的变量是在静态区存储的,所以变量的属性变化了,就没有局部变量的属性了,生命周期变长了,从而使得静态的局部变量出了自己的作用域也不会销毁。其实相当于改变了局部变量的生命周期,生命周期变成了程序的生命周期,但作用域还是test内部。静态变量和全局变量生命周期是一样的。可以理解为static关键字告诉编译器,不管这个函数被调用多少次,这个变量只有第一次需要进行初始化,后边都不需要,可以理解为关键字就是一种特别修饰,是一种编译建议,给编译器的建议。后面就会跳过这句话执行下面的语句。

 2.static修饰全局变量:

如果用static修饰全局变量,一个全局变量在整个工程的其他源文件内部能被使用是因为全局变量具有外部链接属性,当一个全局变量被static修饰的时候,这个变量外部链接属性就变成了内部链接属性,使得这个全局变量只能在自己所在的源文件内部使用,其他文件不能再使用,所以作用域变小了。生命周期没有发生变化。如下图所示:

 3.static修饰函数:

道理和全局变量类似,函数也是具有外部链接属性的。如果用static修饰函数,和全局变量是一个意思。被修饰时候,就变成了内部链接属性,这个函数只能在自己所在的源文件内部使用,不能在其他文件内部使用。

二.作用域和生命周期的区别(补充上次没讲的)

通过上述static的描述,我们会发现作用域和生命周期其实是有区别的,这里我补充一下我上篇博客没写清楚的点。当static修饰局部变量时,生命周期变长了,但作用域还是原来那个。也就是a出了这个范围a不会被销毁,但它不能作用在这个范围外。因为值没有被销毁,所以当循环时,它的值会累加,而不是变回原来的值。当修饰全局变量的时候,作用域变小了,但生命周期却没有变。

小知识点:c语言内置的数据类型是char,int,long这些,自定义的数据类型有enum,struct,union。

三.操作符

算术操作符,就是加减乘除取模操作符。取模操作符只能作用于整形!!!!

移位操作符 其实是作用于一个数的二进制位的!

左移操作符,左边丢位,右边补0。

位操作符:&,|,^

赋值操作符:=

复合赋值符:+=,-=,*=等等

sizeof是一个操作符不是函数,计算字节大小.

关系操作符 就是><之类的

逻辑操作符

括号加类型是强制转换操作符

单目操作符,就是只有一个操作数。

条件操作符 ,是三目操作符,顾名思义是有三个操作数。

arr[4]方块是下标引用操作符,方块的操作数是arr和4。

还有函数的操作符是括号,即ADD(x,y)的括号,假设ADD是一个函数。

操作数先粗略的列举一下,之后的文章会详细讲的。

总结

emm....粗略的介绍了一下,这是我目前学到的,若有错误请指出,毕竟我还是一个小白,希望可以继续进步努力,以后懂得多了会补充上来的。谢谢你的浏览!!!之后的文章会以专题来发布,这样才更有重点。

  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值