c语言第二课------地基打牢,基础打紧,不可放弃1

简介: c语言第二课------地基打牢,基础打紧,不可放弃

这次我们接着上一篇博客,我们接着来继续C语言的学习

变量的作用域和生命周期

变量的作用域:

简单的说就是变量的作用范围,比如我们创建了一个全局变量,作用域就是整个程序

局部变量就是在某块地方或者某个函数内使用

下面我要代码简单的讲解一下

#include <stdio.h>
int b = 10;
int main()
{
  {
    int a = 20;
    printf("%d\n", b);//(1)
  }
  printf("%d\n", a);//(2)
  printf("%d\n", b);//(3)
  return 0;
}

变量b是全局变量,a为局部变量 ,其中(1)和(3)都能打印出来,但是(2)却不能,因为a超出了自己的作用范围,

变量的生命周期:

变量的生命周期就是指,从变量诞生到变量销毁的时间段(可以理解为人的出生到死亡的时间)

局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束的时间段。

全局变量的生命周期是:整个程序的生命周期(全局变量的创建到整个程序的结束的时间段)。

这两者可以说是有关系但是这个关系又很微妙,当我们学习C语言更进一步会慢慢的理解

常量

分为四种

字面常量

45;

const修饰的常变量

代码一;

#include <stdio.h>
int main()
{
  int a = 10;
  printf("%d\n", a);
  a = 20;
  printf("%d\n", a);
  const int c = 20;
  printf("%d", c);
  c = 30;//这一个变量无法更改
  return 0;
}

代码二:

1. int main()
2. {
3.  const int a = 10;
4.  int arr[a] = { 1,2,3,4,5 };
5.  return 0;
6. }

上面小可爱可以去运行看看,都会报错足以看出常变量还是变量

常变量:是具有常属性的变量,一个变量被const修饰就会变成常变量,具有常量的属性但本质上还剩变量

#define定义的标识符常量

#define M 100
int main()
{
  printf("%d", M);
  return 0;
}
#define M 100
int main()
{
  int arr[M] = { 1,2,3,4,5 };
  return 0;
}

可以看出是常量

枚举常量

枚举:一一列举出来

比如RGB的三颜色  红 绿 蓝

代码:

#include <stdio.h>
enum Color 
{
  REN,
  GREEN,
  BLUE
};
int main()
{
  enum Color c = REN;
  printf("%d\n", c);
  enum Color a = GREEN;
  printf("%d\n", a);
  enum Color b = BLUE;
  printf("%d\n", b);
  return 0;
}
#include <stdio.h>
enum Color 
{
    //枚举常量
  REN=6,
  GREEN=3,
  BLUE=9
};
int main()
{
  enum Color c = REN;
  printf("%d\n", c);
  enum Color a = GREEN;
  printf("%d\n", a);
  enum Color b = BLUE;
  printf("%d\n", b);
  return 0;
}

上面一个是默认值,一个是可以赋值

所以枚举常量值可以改变

字符串+转义字符+注释

字符串

"hello"

由双引号( Double Quote )引起来的一串字符称为字符串字面值( String Literal ),或者简称字符串。

字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容

下面我来演示

#include <stdio.h>
int main()
{
  //字符串是可以存放在字符数组中的
  char arr[] = "bit";//我们放入数组的个数为4,其中的\0我们是看不见的
  char arr1[] = { 'b','i','t' };//我们放入数组的个数为3个
  printf("%s\n", arr);
  printf("%s\n", arr1);//要遇见\0才停止打印,因为\0为字符串的结束标记,
  return 0;
}

结果:

可以看出字符串的打印停止是要遇见'\0',注意arr我们放入的元素为bit\0,arr1放入的是bit不要混淆了

或者我们打印一下字符串的长度

代码如下:

#include <string.h>
#include <stdio.h>
int main()
{
  //字符串是可以存放在字符数组中的
  char arr[] = "bit";//我们放入数组的个数为4,其中的\0我们是看不见的
  char arr1[] = { 'b','i','t' };//我们放入数组的个数为3个
  printf("%s\n", arr);
  printf("%s\n", arr1);//要遇见\0才停止打印,因为\0为字符串的结束标记,
  printf("arr的长度为:%d\n",strlen(arr));
  printf("arr1的长度为:%d\n",strlen(arr1));
  return 0;
}

结果:

看看是不是就可以理解'\0'是字符串的结束标记

strlen()   计算字符串的长度,但是是计算'\0'前面的字符,'\0'不计算进去,但是'\0'也是字符,如果字符串的真正长度就是strlen()+1,--------要引入头文件


而前面的sizeof()计算的是空间大小,是计算所有的,就拿上面的来说,只计算数组里面所有元素的总空间大小

b7674f9610fa4cb28b9f7a8522efdbaa.png


相关文章
|
2月前
|
存储 程序员 编译器
爱上C语言:指针很难?来来来,看看这篇(基础篇)
爱上C语言:指针很难?来来来,看看这篇(基础篇)
|
2月前
|
机器学习/深度学习 人工智能 C语言
【c语言基础题】— —第五版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第五版,可当作日常练习和期末复习,有奇效哟!
57 1
|
2月前
|
算法 Java C语言
【c语言基础题】— —第一版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第一版,可当作日常练习和期末复习,有奇效哟!
89 0
|
12天前
低级编程语言----恶搞室友
低级编程语言----恶搞室友
|
2月前
|
安全 C语言
C语言设计扫雷(保姆级教学)
C语言设计扫雷(保姆级教学)
C语言设计扫雷(保姆级教学)
|
2月前
|
人工智能 网络协议 BI
【c语言基础题】— —第七版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第七版,可当作日常练习和期末复习,有奇效哟!
29 0
|
2月前
|
人工智能 网络协议 BI
【c语言基础题】— —第六版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第六版,可当作日常练习和期末复习,有奇效哟!
36 0
|
2月前
|
C语言 wax
【c语言基础题】— —第四版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第四版,可当作日常练习和期末复习,有奇效哟!
98 0
|
12月前
|
存储 编译器 C语言
带你们偷瞄编程绕不开的C语言(三)
带你们偷瞄编程绕不开的C语言(三)
57 0
|
10月前
|
机器学习/深度学习 人工智能 算法
【如何入门编程】编程升级通关绝招
【如何入门编程】编程升级通关绝招
36 0