初识C语言-2

变量的作用域和生命周期

作用域

 作用域可以理解为起作用的范围,只有在固定区域代码才有效。

 一个代码段 {}就是一个作用域,如果将变量a限定在一个作用域内,就只能在这个作用域内操作,如果超出作用域范围,就会报错。

局部变量的作用域就是就是变量所在的局部范围,也就是{}内部。

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

 

 在工程中创建add.c文件,在其中创建一个变量b,赋初值为50,然后在test.c文件中调用变量b,发现报错,原因是我们没有声明变量b,用extern关键字声明一下即可。声明的意思可以理解为打招呼,给程序说一声我们这里有个变量b。

 声明变量b后即可正常调用变量b。

生命周期

 常量

前面介绍过变量,变量即使赋予了初值后期也可以变更,常量反之,常量是不可以改变的量,C语言中,常量大概有如下几种:

 字面常量

字面常量顾名思义就是字面上的常量。

int main()
{
    'a';
    10;
    10.5;
}

如上都属于字面常量。

const修饰的常变量

const修饰的量本身是变量,在const修饰过后变为了常量,所以称为常变量。通常情况下用于我们创建了一个变量后,后期不想随意变更,所以可以加上一个const修饰,使其变为常变量。

 在没有用const修饰前可以随意变更。

 在const修饰过后,不能随意变更。

之所以称为常变量,本质上仍是变量,在用const修饰过后在变量上增加了一个常属性,使其不可修改,但本质仍是变量。

 在我们创建数组的时候,指定数组内部元素个数一定是常量,我们将变量n用const修饰后,此时的n具有常属性,可我们发现仍然不可以创建数组,报错原因使我们使用了变量来创建数组。

由此可以看出,即使用const赋予了常属性,但本质上仍是变量。

#define定义的标识符常量

可以用define来定义一个量,以便后期使用,但定义后的值为常量,不可更改。

 用define定义的M可以用来创建数组,说明M是一个常量。

字符串

C语言中由一串字符组成的,称为字符串

 C语言中 %d是用来打印整形,%s是用来打印字符型。

字符串的结束标志是 \0,\0作为字符串的结束标志,但不算在字符串的长度中。

 strlen可以计算字符串的长度。

从上面代码可以看出arr2都是按照我们想的显示出来,为什么arr1就会出现乱码,而且长度为15呢?

 打开监视窗口可以看到,arr1尾部没有\0作为结束标志,这就会导致程序在内存中继续运行,直到找到\0才会停止,所以在arr1中的abc后面就会出现乱码的现象。

监视窗口中arr2的尾部有\0作为结束标志,所以可以正常运行。

想要改进上述arr1中的情况,只需要在arr1数组的尾端加上\0:

 转义字符

在前面的程序中我们在printf函数中见过\n这样的字符,但是在程序中也没有显示出来,实际上在C语言中,这是转义字符,其作用就是转变意思的作用。

 上面的代码并没有按照我们想的样子展现出来,这是因为在字符串中有一些转移字符,改变了原有意思。下面的表格将汇总常见的转义字符:

 在这里需要详细说明的是\ddd转义字符与 \xdd转移字符,\ddd是八进制数字,如何看待他所表达的意思?是要将这个8进制数字先转换为10进制数字,然后对照其ASCALL码表,来查看对应表示。

例如\130 130为8进制数字,要先转变为10进制数字,为0*8^0+3*8^1+1*8^2 = 88,此时的10进制数字为88,对应ascall码的为x

 下面的16进制数字和8进制同理,将16进制转化为10进制,在对照ascall表寻找。

选择语句和循环语句

在初识C阶段只是简单的介绍其用法,不做过多解读。

选择语句基本的时if,else语句,可以实现单分支语句和多分支语句。

 循环语句包括while循环,for循环,以及dowhile循环。这里只简单的介绍while循环

 当我们符合循环条件时,会一直循环,直到跳出循环。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值