C语言入门篇(一)下

简介: C语言入门篇(一)

4.4 变量的作用域和生命周期

  • 作用域

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用

的而限定这个名字的可用性的代码范围就是这个名字的作用域


1.局部变量的作用域是变量所在的局部范围。

2.全局变量的作用域是整个工程。


  • 生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

这里的销毁是,把空间还给操作系统


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

2.全局变量的生命周期是:整个程序的生命周期。


我们进一步了解一下变量的作用域与生命周期

49cd82af6b7c8536f91db4acb3a04079_c4ce5f5162a44d4389ea6d3dec51c5c0.png

这段代码中,我们定义的变量a在第二个{}里,即它的作用域,出了这个{}就不起作用了。


如果我们希望输出a,就需要在{}前先做

定义。

代码如下:


#include<stdio.h>
int main()
{
  int a = 10;
  {
     a = 5;
  }
  printf("%d\n", a);
  return 0;
}

运行结果:

7e6234d17c1e06e345264097f7f4e8f7_627c87358f934d7f99df7a7595cca4b1.png

说明:

如果源文件需要引用其他文件中的变量,我们可以在文件中用extern声明

09b6218df7a75a670b730d9efe8afa9e_cf7e4ed9920f45b294d65298f311f183.png

能够被其他模块以extern修饰符引用到的变量通常是全局变量。


4.5 常量

C语言中的常量分为以下几种:


  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量
#include<stdio.h>
enum color
  {
    RED,GREEN,BLUE//枚举常量
  };
int main()
{
  //字面常量
  3.14;
  'a';//字符
  "abc";//字符串
  //const修饰的常变量
  const int pi=3.14f;//这里的pi是const修饰的常变量,具有常属性,但本质还是变量
  pi=2.6;//pi是不能直接修改的
  //变量一旦定义就不能修改
  //#define
  #define SIZE 10
  printf("size = %d\n",SIZE);//输出:10
  //枚举常量
  printf("%d\n",RED);//输出:0
  printf("%d\n",GREEN);//输出:1
  printf("%d\n",BLUE);//输出:2
  //枚举常量的默认是从0开始,依次向下递增1
  return 0;
}


5. 字符串&转义字符


5.1 字符串

"hello world"

这种由双引号引起来的一串字符称为字符串字面值,简称为字符串.


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


#include<stdio.h>
#include<string.h>
int main()
{
  char a1[] = "hello";//这里隐藏了\0
  char a2[] = { 'h', 'e', 'l', 'l', 'o' };
  char a3[] = { 'h', 'e', 'l', 'l', 'o', '\0' };
  printf("%s\n", a1);
  printf("%s\n", a2);
  printf("%s\n", a3);
  return 0;
}

运行结果:

54117c17d1a3afcbf67d1eb4089d4c08_4666f03587324ec281ee63d961411ae1.png

f66f70e25da16bb74674dcfae4804f66_64103a48f0fc4c178d80cbf59eee6119.png

调试代码,可以直观地看到’\0’就是字符串结束的结束标志。


我们也可以通过计算字符串的大小进一步证明:

4dda2d6536ef3912d5a7d332cad8c561_eb42c53a3fac4c39883757984fc4b602.png


strlen()计算字符串的长度,即字符的个数,遇到’\0’结束,不包括结束字符’\0’

sizeof()计算的是数据所占空间内存的大小,单位是字节


5.2 转义字符

  • 转义字符顾名思义就是转变意思

我们先看看下面的代码运行结果会是什么呢?

#include<stdio.h>
int main()
{
  printf("c:\code\test.c\n");
  return 0;
}

运行结果:

12ed522d4fb1387c741a91469d68614a_0fde45f7b69a4f47878081fa5347f2eb.png

在这里面就存在着一些转义字符。


转义字符 释义
? 在书写连续多个问号时使用,防止他们被解析成三字母词
用于表示字符常量
" 用于表示-一个字符串内部的双引号
\ 用于表示一个反斜杠,防止它被解释为-个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 换页符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd d d d表示1-3个八进制的数字。如: \130 表示字符X
\xddd d d表示2个十六进制数字。如: \x30 表示字符0

了解了转义字符后,我们可以看看下面代码中的字符串长度。


#include<stdio.h>
#include<string.h>
int main()
{
  printf("%d\n",strlen("c:\test\178\x65\test"));//13
  return 0;
}


6. 注释


  • 有不需要的代码行可以直接删除,也可以注释掉
  • 代码中有写代些代码不好理解,可以加入注释文字
#include<stdio.h>
int Fun(int x, int y)//定义乘法函数
{
  return x*y;
}
/*C语言注释风格
int Sum(int x, int y)
{
  return x + y;
}
*/
int main()
{
  //C++注释风格
  //int a, b;
  //printf("%d\n", Sum(10, 20));//调用Sum函数,完成加法
  printf("%d\n", Fun(10, 20));//调用Fun函数,完成乘法
  return 0;
}

注释的两种风格:


  • C语言风格的注释 /xxxxxx/

缺陷:不能嵌套注释

  • C++风格的注释 //xxxxxx

可以注释一行也可以注释多行


结束语


以上就是我这次文章的分享,对C语言的几个基础概念进行了总结,希望对大家有所帮助。如果有不对的地方,还希望大家可以评论指正,我一定会及时来修改的。

 路漫漫其修远兮~

 我们下篇文章再见。



相关文章
|
2月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
68 2
|
18天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
71 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
2月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
35 1
|
2月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
4月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
5月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
71 4
【C语言入门】初识C语言:掌握编程的基石
|
4月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
66 1
|
5月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
119 2
|
5月前
|
前端开发 C语言 C++
C语言入门02---环境搭建
C语言入门02---环境搭建
|
6月前
|
存储 Web App开发 算法
c语言的简单入门
熟悉c语言(简单入门)