栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习记录3

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习记录3

变量还有两个重要的属性:作用域(scope)和生命周期(life cycle)

作用域指的就是这个变量程序哪里可以用,哪里不能使用。局部变量的作用域是定义它的那个代码块,在这个代码块中可以使用,离开这个代码块就无法使用;全局变量的作用域是整个工程文件,比如一个工程中有两个2个.c文件

int main()
{
	extern int globalNumber0;
	printf("%dn",globalNumber0);
	return 0;
}
int globalNumber0 = 11011;

这里加的extern 是一个声明,是针对外部符号的,用来告诉编译器变量globalNumber0已经定义了,因为globalNumber0的定义与使用不是在同一个.c文件中的,如果不声明的话,编译器会报错。

变量的声明与定义的区别
定义声明
只能定义一次可以有多次声明
直接定义,有无声明均可只能声明定义过的变量

比如这样的代码就可以正常编译,但如果删掉定义编译器就会报错:

int globalNumber0 = 11011;
#include

int main()
{
	extern int globalNumber0;
	extern int globalNumber0;
	extern int globalNumber0;
	extern int globalNumber0;

	printf("%dn",globalNumber0);
	return 0;
}

 生命周期是指变量从创建到销毁的时间段。局部变量的生命周期 == 其作用域的周期,进入其作用域就创建,离开作用域就销毁;全局变量的生命周期 == 程序的周期。

C语言常量分类
字面常量就是直接写出的数字字母之类,如: 1,2,3,a,b……
#define定义的标识符常量#define name value 如: #define MAX 255
枚举常量

可以一一列举,如性别、月份、RGB三原色等,形如:

enum name

{

……

};

enum为枚举关键字 

比如:

enum Tricolor

{

RED,

GREEN,

BLUE

};

-----------------------------------------------------------------------------------------------------------
const修饰的常变量const variableType = variableValue;严格来说,这不是常量,而是一个具有常属性的变量。与上面三种真正意义上的常量(不可修改)相比,const修饰的常变量虽然不能直接重新给它赋值,但可以用指针等方法修改它的值,且在C89/C90标准下,也不能用于指定数组的大小

需要注意的是枚举常量不可改变是指定义的常量本身({}中的内容),而用枚举常量创建的常量可以修改,比如这个程序可以通过编译,输出为

0

1

#include 

enum Tricolor
{
	RED,
	GREEN,
	BLUE
};

int main()
{
	enum Tricolor light = RED;

	printf("%dn",light);
	light = GREEN;
	printf("%dn",light);
	//RED = 1;

	return 0;
}

但这个程序会报错

#include 

enum Tricolor
{
	RED,
	GREEN,
	BLUE
};

int main()
{
	RED = 1;

	return 0;
}

字符串

C语言中没有单独定义字符串类型,它是用一串标记好的字符表示的。

被双引号""(double quote)引起的一串字符叫做字符串字面值(string literal),简称字符串。字符串以为结束标志,是一个转义字符,计算字符串长度时为结束标志,不算内容。

比如:"abcd","1234","Hello,world"和""(空字符串)

字符串可以存放在字符数组中,它与直接存字符相比多一个作为结束标志

#include 

int main()
{
	char arr0[] = {"Hello"};
	char arr1[] = {'H','e','l','l','o'};

	printf("%s ",arr0);
	printf("%dn",sizeof(arr0) );
	printf("%s ",arr1);
	printf("%dn",sizeof(arr1) );

	return 0;
}

输出结果为

Hello 6

Hello…(这里会有一些随机值) 5

可以看出arr0的大小要比arr1多一个byte,因为arr0除了需要存Hello外还要在结尾存放一个作为结束的标志,所以arr0的大小 == 字符数+1 。的存在,让计算机在以字符串%s形式读取时能知道在哪里停止。而arr2没有存储,计算机就会一直读取后面的数据,知道读到,但是后面的数据我们没有进行处理,它们是随机的,因此arr1的Hello后面会跟随着一串长度不定的随机值。

如果在arr1后面加上一个0,它的输出就会与arr0相同,因为的值 == 0(ASCII)

	char arr1[] = {'H','e','l','l','o',0};

计算机上的数据是以二进制的形式存储的,为了能够存储字符,人们将不同的字符用特定的数字表达,如A是65、a是97,这种编码方式叫ASCII编码。

在计算字符串长度时,C语言标准库里提供了strlen函数,strlen(arr0)可以输出字符串长度注意引用string.h文件,根据之前的理论,可以推断出结果

#include 
#include 

int main()
{
	char arr0[] = {"Hello"};
	char arr1[] = {'H','e','l','l','o'};

	printf("%dn",strlen(arr0) );

	printf("%dn",strlen(arr1) );

	return 0;
}

输出结果为

5

5<=的随机数

转义字符

转变其他字符原来意思的字符

比如说'n'是一个普通字符,但在它前面加上一个,n就表示换行,成了一个字符,不是单纯的和n;  t是水平制表符(效果与键盘上的Tab键相同)

C语言转义字符(部分)
转义字符释义
?连续书写多个问号,防止被解析成三字母词trigraph,如:??)就可以表示]
'表示字符常量
"表示字符串内的双引号
\表示一个反斜杠,防止被解析成转移序列符
a发出警告蜂鸣声
b退格符
f进纸(换页)符
n换行
r回车
t水平制表符(效果与键盘上的Tab键相同)
v垂直制表符
ddd表示1~3个8进制数,如:12 == 十进制的10,111 == 十进制的73
xdd表示2个16进制数,如:11 == 十进制的17,57 == 十进制的87
?在一些新的编译器中已经被移除了,这些编译器不再识别三字母词

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/833048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号