【C语言学习篇】入门C语言(2)

五、变量

变量在我们生活中也是非常的常见,例如:年龄,体重,薪资等等。

1.定义变量的方法

其实在之前你们已经会定义了,只是不知道而已,定义变量很简单:int a=100;char ch=‘w';

float weight=65.5f;很简单。其中65.5后面加f是因为编译器默认一个小数为double类型,而我们定义的是float类型,所以后面加一个f就不会默认为double类型了。

2.变量的命名

变量的命名很灵活,基本上是可以达到我们的随意。

有几个限制条件:(1)只能由数字、字母、下划线(_)组成 。

                             (2)长度不能超过63个字符

                             (3)变量名中区分大小写。

                              (4)变量名不可以使用关键字。(例如int short之类的,后面会说什么是关键字)(最好有意义一些,例如定义体重用int weight=xx,而不是int a=xx,如果变量多了就不记得什么对应着什么了)

3.变量的分类

(1)局部变量:就是定义在main{ }内部的变量 (2)全局变量:就是定义在main{ }外的变量。

#include <stdio.h>
int a = 10;   //全局变量
int main()
{
    int a = 200;    //局部变量
    printf("%d", a);
	return 0;
}

当全局变量和局部变量同时定义了一个相同变量时,会发生什么呢?

 如图,当全局变量和局部变量同名时局部变量优先。

注意:局部变量不可以被多次初始化,即int a=10;int a=20;如想改变a的值,则a=20;即可。

下面我给大家来一段变量的使用例子吧

计算器:

#include <stdio.h>
int main()
{
	int a = 0;     //a和b为要想加的两个数
	int b = 0;
	int num = 0;   //num为相加后的和
	printf("请输入两个数,两个数之间用空格隔开\n");
	scanf("%d %d", &a, &b);    //scanf用于输入a和b的值
	num = a + b;			//把a和b相加的值赋给num					
	printf("%d", num);		//打印相加后的值
	return 0;
}

其中scanf函数为库函数,是用于输入数值的函数,在这里就给a和b输入了值。头文件为#include <stdio.h>
4.函数的作用域和生命周期

作用域:

作用域是程序设局的一个概念,通常来说,一段代码中所用到的名字并不是总是有效的,而限定这个名字的可用性的代码范围即为作用域。

如图a的作用域就是这个方块内部。

而如果像下图一下定义,则会出错,因为printf打印的b已经不再b的作用域内,printf找不到b。

 

(1)局部变量的作用域是在变量所在的局部代码块内。

而全局变量就很厉害

在一个工程,不同的文件中也可以相互使用,只需要用extern声名一下即可(2)全局变量的作用域是整个工程。(一个工程可以包含很多个文件,全局变量可以跨文件使用,只需要适当的声名即可)

生命周期:

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

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

(2)全局变量的生命周期是整个工程的生命周期。

六、字符串

其实,我们刚开始打印的“hello world!!!”就是一个字符串。

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

字符串的结束标准是一个\0的转义字符,在计算字符长度时\0也时结束标志,同时不算做字符串的长度。字符串使用数组来定义的。

如图下面的代码为什么会出现这种效果呢?

 arr1时字符串,字符串会自动在末尾加上一个\0,而arr2时字符数组,没有\0,所以在打印时printf要找到一个\0才可以结束打印,所以arr1打印出了VS,arr2打印时,要在内存里找到一个\0才停止,所以打出了一堆未知的东西。arr3我们人为添加了\0,所以打印出VS后停止打印。

strlen是一个计算字符串大小的函数,属于库函数,头文件<string.h>

在strlen计算是也是要找到一个\0才停止计算,所以arr1和arr3都是2个字符,而arr2是一个随机的数字大小。

图中红色的方块可以看作是计算机内部的内存空间。

注意:只有字符串由结束标志。

这个过程可以看出\0就发挥了很大的作用。

 七、转义字符

当我们要打印一个\n时,结果打印出来的时空空的换行。

这时候就需要转义字符的帮助。

下表就是一些转义字符:

 (1)\'

printf("%c\n", ''');
printf("%c\n", '\'');

 第一种会出错,而第二种则会打印出一个单引号。

双引号和斜杠的打印也一样。

(2)\?

在早期的编译器里有三字母词的说法,??)会转变为 】,所以打印多个?时,这样书写:

printf("abc\?\?");   //则会打印出abc??

(3)\a会出现蜂鸣,就是电脑响一下。

(4)\b退格符

printf("ab\bcde"); //则会打印出acde

(5)\ooo 

ooo表示1~3个八进制数字。如\130

(6)\xoo

oo表示1~2个十六进制的数字。如\x32

其他的不太重要就不一个一个介绍了,如果想要详细了解,可以私信我哦。

下面给大家出一道题:

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

你们觉得打印的时多少呢?

八、注释

代码中有不需要的代码可以直接删除掉,也可以注释掉,代码中有一些难理解的地方,可以加如一些文字注释。

 (1)C语言中的注释:/*xxxxxxxxxxxx*/   缺陷,不能嵌套使用

#include <string.h>
int main()
{
/*	printf("%d", strlen("c:\test\628\test.c"));
   /* printf("%d", strlen("c:\test\628\test.c"));
	printf("%d", strlen("c:\test\628\test.c"));  */
	printf("%d", strlen("c:\test\628\test.c"));    */
	return 0;
}
	

 如图看出,最后一行的printf没有被注释掉

/*只会去找离他最近的一个*/,所以说不嫩嵌套使用。

(2)C++中的注释://xxxxxxxxxx 

可以注释一行或多行。用起来方便。

好了,今天的学习就到这里,明天我们继续学习循环,选择语句,数组,和一些操作符。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值