鹏哥C语言18-21---关键字+#define 定义常量和宏

//-------------------------------------------------------------------------------------------------------------11.关键字
//关键字是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

*/

// --------------------------------------------------------------------------------------变量的命名
// 1.有意义
// 2.名字必须是字母,数字,下划线组成,不能有特殊字符,同时不能以数字开头
// 3.变量名不能是关键字

#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS


//--------------------------------------------------------------------------------------------------------------11.1 关键字 typedef
//类型定义 类型重命名  
//给一个类型重新起个新的名字, 只能针对类型

//typedef unsigned int uint; //把  unsigned int  重新定义为  uint
//
//typedef struct Node
//{
//    int data;
//    struct Node* next;
//}Node;  // 把 struct Node  重新定义为  Node
//
//int main()
//{
//    unsigned int sum1 = 0;
//    uint sum2 = 1;//等价于  unsigned int sum2 = 1
//    struct Node n1;
//    Node n2;//等价于 struct Node n2
//
//    return 0;
//}


//--------------------------------------------------------------------------------------------------------------11.2 关键字 static
//静态
//1.修饰局部变量  2.修饰全局变量 3.修饰函数

//-------------------------------------------------------------------------------------------11.2.1 static修饰局部变量
// static 修饰局部变量的时候,局部变量出了作用域,不会销毁
// 本质上,static修饰局部变量的时候,改变了变量的存储位置
// 影响了变量的生命周期,生命周期变长,和程序的生命空间一样

//void test()
//{
//    int a = 1;
//    a++;
//    printf("%d\n", a);//循环10次, 输出10个2  ??为什么 
// //因为a是局部变量,每次使用完,出了作用域就销毁,再进入函数时会重新创建新的a=1
//}

//void test()
//{
//    static int a = 1; 
//    a++;
//    printf("%d\n", a); //循环十次,输出2,3,4,5,6,7,8,9,10,11  
//}
为什么??????
static 修饰 a 之后, a 不会被销毁,再循环的时候不会重新创建a的值,保留上一次函数作业的值
static 修饰局部变量的时候,局部变量出了作用域,不会销毁
本质上,static修饰局部变量的时候,改变了变量的存储位置,
影响了变量的生命周期,生命周期变长,和程序的生命空间一样
//
//int main()
//{
//    int i = 0;
//    while (i < 10)
//    {
//        test();//调用函数test
//        i++;
//    }
//
//    return 0;
//}


//---------------------------------------------------------------------------------------------11.2.2 static修饰全局变量
// 
// 全局变量 大括号外边的变量,  
// 没有static时, 全局变量在其他源文件时中也可以使用,需要声明外部符号
// 全局变量具有外部链接属性
// static 修饰全局变量的时候,这个全局变量的外部链接属性,就变成了内部链接属性,其他源文件就不能再使用到这个全局变量了
// 我们在使用的时候,就感觉到作用域变小了
 
//定义全局变量  int g_val = 2022;   到  add.c 中

//extern int g_val;  //extern 关键字 -----声明外部符号
//
//int main()
//{
//    printf("%d\n", g_val); //需要声明外部符号
//    //输出2022
//
//    return 0;
//}

//----------------------------------------------------------------------------------------------11.2.3 static修饰函数

// 把函数放到 add.c 里
//int Add(int x, int y)
函数值需要返回时,用int; 函数值不需要返回时,用void
//{
//    return x + y;
//}

//extern int Add(int x, int y); // extern关键字
一个函数, 本来是具有外部链接属性的,加上  static  以后,就不在具有外部链接属性
就变成了内部链接属性,其他源文件就不能再使用到这个全局变量了
//
//int main()
//{
//    int a = 10;
//    int b = 20;
//    int sum = Add(a, b);//调用函数Add(int x, int y)
//    printf("%d\n", sum);
//
//    return 0;
// }

//-----------------------------------------------------------------------------------------11.3 关键字 register (寄存器)
//电脑上的存储设备有哪些?
// 寄存器(集成到CPU上)
// 高速缓存(cache)
// 内存
// 硬盘
// 越靠上访问速度越快,空间越小,造价越高
// 越靠下访问速度越慢,空间越大,造价越低


自己创建寄存器变量
//int main()
//{
//    register int num = 3;//寄存器变量  ,建议 3 存放在寄存器中,只是建议,实际情况电脑自己会判断
//
//    return 0;
//}


//--------------------------------------------------------------------------------------------12.  #define 定义常量和宏
//define 不是关键字,他是预处理指令

// define定义标识符常量
//#define NUM 100//定义常量

//int Add(int x, int y)
//{
//    return x + y;
//}

// define 定义宏
// 宏是有参数的
#define ADD (x, y)  ((x)+(y))
//           宏名 宏的参数   宏体

int main()
{
    //printf("%d\n", NUM);//输出100
    //int n = NUM;
    //printf("%d\n", n);//输出100
    //int arr[NUM] = { 0 };
    //printf("%d\n", arr[4]);//输出0

    int a = 10;
    int b = 20;
    int z = ADD(a, b);
    printf("%d\n", z);

    return 0;
}


 

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值