跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方


NedK7

推荐的帖子

 

auto

变量的作用域:

  • 变量可以作用的范围。一般都是花括号里面。

变量的生命周期:

  • 变量从被创建到销毁所经历的时间。

可以认为局部变量都默认是auto的,但是你不写编译器也知道。该关键字几乎不用了。

register

当你使用register去修饰一个变量时,编译器会尽可能将该变量放在CPU的寄存器中而非内存中,所以CPU访问该变量的速度是很快的。
几点注意:

  • 1,register修饰的最好是局部变量。因为全局变量会一直占用寄存器。
  • 2,不会被写入。写入就要写回内存。那么该变量设为register就没有意义。
  • 最好是高频读写的。
  • 无法被&符号取地址。
  • 不要被大量使用,因为寄存器有限。

为什么要有头文件

很多时候我们有这样的需求:在一个源文件中使用另一个源文件的函数或者变量。那么能不能直接使用呢?

  • 函数可以,但是会警告,函数只要链接找到就可以。(只限于自己写的函数,想要使用库函数或者别的函数必须包含声明)。
  • 而变量必须声明过才可以使用,且不能在声明的时候赋值。因为声明不开辟空间。

但是如果我有100个源文件,每个源文件都要使用同一个全局变量,那么怎么办呢?我难道要写100遍声明吗?

所以,一个好的处理方法就是,将这些声明提取到1个共用的文件中,以便于项目的维护。而这个文件就是头文件。而每个想要使用其中变量或者函数的源文件,只需要包含该头文件即可。

  • 头文件包含的内容:
    头文件包含

static

我们知道了全局变量和函数是可以跨文件的。而函数甚至不用声明就可以使用。那么有没有办法保证你的函数无法直接被其他源文件使用呢?

  • static修饰全局变量,表示该变量只能在源文件内部使用。改变了该变量的作用域。但是可以间接使用。
  • static修饰函数,表示该函数只能在该源文件内部使用。但是可以嵌套式的间接使用。
  • static的特性为C语言提供了封装性的可能。保证了项目的安全性。
/************* test.c文件 ***************/
static int g_val = 100;  //g_val无法被外部文件直接访问。因为static
int show_val() {
	printf("%d\n", g_val); //但是可以通过show函数访问;因为show函数可以被其他源文件访问
}

static void test(){ //被static修饰,无法被外部直接访问
 // do something...
}
void show_test(){
	test(); //但是可以通过嵌套,间接访问
}
  • static修饰局部变量,该变量的生命周期

extern

  • 在变量前面,表示声明该变量。全局变量声明必须带上extern,否则就可能引起编译器的二义性。不带上无法分辨是定义还是声明。
  • 函数可以不带,因为编译器可以分辨出函数的定义和声明,但是为了保持好习惯,建议带上。
    extern
链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...