评论

收藏

[C++] C语言编程学习笔记(鹏版)2021/7/11

编程语言 编程语言 发布于:2021-07-12 13:44 | 阅读数:203 | 评论:0

  常见关键字

  • auto
  自动的意思,一般在局部变量的前面,但因为局部变量都是自动变量所以省略了
  int main()
  {
  auto int a=10;       //是局部变量=自动变量
  return 0;
  }

  • break
  结束,指跳出、结束循环

  • case
  • char
  字符类型

  • const
  常变量

  • cotinue
  继续

  • default
  默认

  • do
  循环

  • double

  • else

  • enum
  枚举常量

  • extern
  声明引用外部符号

  • float
  单精度浮点数

  • for
  循环

  • goto
  程序跳转

  • if
  条件语句

  • int
  整型

  • long
  长整型

  • register
  寄存器关键字
  引出:计算机存储数据是分为:硬盘(500G),内存(8G/4G/16G),高速缓存,寄存器
  又CPU(中央处理器)需要从内存中拿出数据
  register int a=10;
  所以这个关键字就是建议把它标记的数据发到寄存器里,然后编译器会自己判断要不要放在寄存器里

  • return
  返回

  • short
  短整型

  • signed
  有符号的,所以int=signed
  引出:无符号整型为unsigned int num=0;一定为正整数了

  • sizeof
  计算大小

  • static
  用来修饰局部变量时,局部变量的生命周期会变长,修饰全局变量时,全局变量的作用域只能在自己所在的原文件内部使用,以及修饰函数会改变函数的链接属性
  修饰局部变量时:
  void test()                   //void指无,即无返回值
  {
  static int a=1;            //a是一个静态等等局部变量,即只被赋值一次
  a++;
  printf("a=%d\n",a);
  }
  int main()
  {
  int i=0;
  while(i<5);
  {
  test();
  i++;
  }
  return 0;
  }
  不加static时最后结果为五个2
  加了就是2 3 4 5 6
  修饰全局变量时:
  第一个文件
  static int g_val=2020;           //定义一个被修饰的全局变量
  第二个文件
  int main()
  {
  extern int g_val;                   //extern声明外部符号的
  printf("g_val=%d\n",g_val);
  return 0;
  }
  这时会报错g_val没有赋值
  修饰函数时
  第一个文件
  static int Add(int x,int y)
  {
  int z=x+y;
  return z;
  }
  第二个文件
  extern int Add(int,int);                  //声明外部函数
  int main()
  {
  int a=10,b=20;
  int sum=Add(a,b);
  printf("sum=%d\n",sum);
  return 0;
  }
  这时会报错没有Add的函数定义
  

  • struct
  结构体关键字

  • switch

  • typedef
  类型定义、类型重定义
  int main()
  {
  typedef unsigned int u_int;       //把这个类型重新定义为u_int
  unsigned int num1=20;            //和下面一行作用相同
  u_int num2=20;                        //所以num为无符号整型
  return 0;
  }

  • union
  联合体、共用体

  • void
  无、空

  • volatile

  • while
  注意:自己定义的符号不能与关键字相同,会冲突
  Fn+F11是监控时用于进入此行函数运行
  Ctrl+鼠标滚轮是放大缩小
  #define定义常量和宏
  定义标识符常量时
  #define MAX 100        //定义MAX,这样下面都可以用了
  int main()
  {
  int a=MAX;                 //直接引用a=100
  return 0;
  }
  定义宏时(宏指在标识符常量的基础上带参数)
  普通方式:
  Max(int x,int y)
  {
  if(x>y)
  return x;
  else
  return y;
  }
  宏方式:
  #define MAX(X,Y) (X>Y?X:Y)
  公式:
  int main()
  {
  int a=10,b20;
  int z=MAX(X,Y);
  printf("max=%d\n",z);
  return 0;
  }
  指针
  内存
  是电脑上特别重要的存储器,计算机中所以程序的运行都是在内存中进行的。
  所以为了有效地使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节(32位最高4G)。
  为了能够有效地访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
  int main()
  {
  int a=10;                      //申请4个字节
  printf("%p\n",&a);       //&a指取a的地址,对应的%p
  return 0;
  }
  结果会显示一个16进制的地址号码
  int main()
  {
  int a=10;                             //申请4个字节
  int* p=&a;                          //现在变量p存放了a的地址,即指针变量,int*是指针变量p的类型
  printf("%p\n",&a);              //&a指取a的地址,对应的%p
  printf("%p\n",p);                 //最后两者输出的地址相同
  *p=20;                                //*是解引用操作符,该行指通过*p找到的a进行=20的操作
  printf("a=%d\n",a);            //结果为20
  return 0;
  }
  注意这里的p是它的内容改为了a的地址,*p=20指将a的内容改为了20
  又如:
  int main()
  {
  char ch=’w’;
  char* pc=&ch;
  *pc=’a’;
  printf("%c\n",ch);         //结果为a
  }
  注意:32个bit位相当于4个字节,所以在32(64)位一个地址为4(8)个字节
  将编译器从32位改为64位方法步骤
  点击编译器第二行工具栏中的Debug里的配置管理器——活动解决方案平台中选新建——选择x64平台——确定
  int main()
  {
  printf("%d\n",sizeof(char*));       //结果为4
  printf("%d\n",sizeof(int*));       //结果为4
  ,,,,,,
  return 0;
  }

  
关注下面的标签,发现更多相似文章