C语言——关键字

C语言——关键字,第1张

C语言——关键字

常见关键字

  • auto    定义自动变量 

       auto int( 所有的局部变量都是auto的,即自动创建自动回收,因此一般都省略auto)

  • break   定义终止    一般用于循环  while,for,do,switch

  • case   用于switch语句

  • char  

  • const   常属性    用于修饰变量,修饰指针

  • continue  用于循环

  • default    默认  用于switch  case语句

  • double    用于类型 和if else搭配使用

  • enum   枚举

  • do   用于do  while语句

  • extern  用于声明外部符号

  • goto   分支和循环

  • register    寄存器    访问速度快 

  • return  用于函数

  • signed/unsgined  用于类型,本身不是类型,是关键字(有符号的,无符号的)

  • void 无,空     一般用于函数的返回类型,函数参数,修饰指针 

  • volatile     linux *** 作系统

  • static  静态的

  • struct   结构体

  • union   联合体

     (三个可以自定义的类型  : union,struct,enum)

  • typedef    类型重定义


  • 关键字 typedef
typedef 顾名思义是类型定义,这里应该理解为类型重命名。 类型重命名怎么用?

类型重命名用法与变量定义相似,只是在前面加上 typedef

创建平台无关的数据类型,比如: time_t 、 size_t 、 uint8_t 、 int8_t 等。
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
    //观察num1和num2,这两个变量的类型是一样的
    unsigned int num1 = 0;
    uint_32 num2 = 0;
    return 0; }
  • 关键字static
在 C 语言中,static是用来修饰变量和函数的。 1. 修饰局部变量 - 称为静态局部变量 2. 修饰全局变量 - 称为静态全局变量 3. 修饰函数 - 称为静态函数  修饰局部变量
//代码1 #include 
void test()
{
    int i = 0;
    i++;
    printf("%d ", i); }
int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0; }


//代码2
#include 
void test()
{
    //static修饰局部变量
    static int i = 0;
    i++;
    printf("%d ", i);
}
对比代码 1 和代码 2 的效果理解 static 修饰局部变量的意义。 结论: static修饰局部变量改变了变量的生命周期。 让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。 修饰全局变量
//代码1
//add.c
int g_val = 2018;
//test.c
int main()
{
    printf("%dn", g_val);
    return 0; 
}



//代码2
//add.c
static int g_val = 2018;
//test.c
int main()
{
    printf("%dn", g_val);
    return 0; 
}
代码 1 正常,代码 2 在编译的时候会出现连接性错误。 结论: 一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使 用。 修饰函数
//代码1
//add.c
int Add(int x, int y) {
    return c+y; }
//test.c
int main()
{
    printf("%dn", Add(2, 3));
    return 0;
}


//代码2
//add.c
static int Add(int x, int y) {
    return c+y; }
//test.c
int main()
{
    printf("%dn", Add(2, 3));
    return 0; 
}
代码 1 正常,代码 2 在编译的时候会出现连接性错误 . 结论: 一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

static修饰局部变量,改变了变量的存储类型(有栈区存储变为静态区)。从而使得静态的局部变量出了自己的作用域也不会销毁,其实相当于改变了局部变量的生命周期。

如果想使用来自其他文件的全局变量,需要先进行声明。

extern是一个关键字,是专门用来声明外部符号的。

一个全局变量在整个工程的其他文件内部能够被使用,是因为全局变量具有外部链接属性。当一个外部变量备static修饰的时候,这个变量的外部链接属性就变成了内部链接属性,使得这个全局变量只能在自己的源文件内部使用,其他文件不能再使用,给我们的感觉是定义域变小了。

内存是一块比较大的使用空间,使用内存时会划分出不同的功能区域。

  1.     栈区:存放局部变量,临时变量
  2.     堆区:动态内存分配  
  3.      静态区:存放全局变量,存放静态变量,因此生命周期不变

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4949810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存