一. 变量
1.变量的命名
- 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
- 不能以数字开头。
- 长度不能超过63个字符。
- 变量名中区分大小写的。
- 变量名不能使用关键字。
拓展:来判断一下下面的定义对不对?
int main()
{
//1.
int 2b;
//2.
int s-b;
//3.
int Sb;
int sb;
//4.
int char;
//以上代码只有第三个对了,其余命名错误,不知你对了吗?
return 0;
}
2.变量的初始化
- 在变量开辟空间的同时,给变量一个确定的值。
int main()
{
int a;//说明数据类型,变量名。这称为声明(命名)一个变量,后面只需变量名就可使用。
a = 0;//将0赋给a,这是将一个变量赋值。
//这两条语句合起来写成:int a = 0; 这样声明+赋值就为变量的初始化
return 0;
}
补充:变量的声明与定义
extern int a;//只是声明这个变量,并没有定义这个变量。
int a;//声明并定义一个变量。
//声明的意思只是说有这个变量,定义意思是给这个变量开辟空间。
int main()
{
return 0;
}
3.变量的分类
#include <stdio.h>
int a = 0;//在大括号——{}外面的称之为全局变量
int main()
{
int a = 1;//大括号里面的称为局部变量
printf("%d",a);
return 0;
}
1.思考:这里的代码有误没?如果无误这几条代码的执行结果是什么?
答案:无误,打印 1。
解析:在全局变量和局部变量同名是优先使用局部变量。
这里的局部变量使用的范围在所在大括号里面,这里使用的范围是程序的专用名词——作用域,而全局变量的作用域为整个工程。
3.变量生命周期
定义:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
1.全局变量的生命周期:整个程序开始时创建,结束时销毁。
2.不加修饰的局部变量的生命周期:进入大括号(准确的说是执行定义变量的语句时)创建,出去时销毁。
4.变量的作用域
定义
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2.全局变量的作用域是整个工程。
5.常变量
1.被const修饰的变量,称之为常变量,但常变量还是一个变量,不能当做常数来用
2.被const修饰的变量,不可被直接改变,要想改可以通过指针进行修改。
int main()
{
const int a = 0;
a = 1;//不可以被修改
int *p =&a;
*p = 1;//可以被修改
return 0;
}
二. 字符
1.单个字符和字符串
#include <stdio.h>
int main()
{
char a ='n';
printf("%c",a);
char arr0[]={'a','b','c','\0'};
char arr1[]={'a','b','c',0};
char arr2[]={'a','b','c'};
char arr3[3]={'a','b','c'};
char arr4[4]={'a','b','c'};//这里的arr[3]存的是第四个元素‘\0’,arr[0]存的是第一个元素‘a’。
char arr5="abc";
printf("%s",arr);
printf("%s",arr1);
printf("%s",arr2);
printf("%s",arr3);
printf("%s",arr4);
printf("%s",arr5);
return 0;
}
思考:这里如果要打印 ’ 怎么办?这里的数组打印的结果都相同吗?arr0与arr1的最后一个字符相同吗?
答案;
1.
#include <stdio.h>
int main()
{
printf("%c",'\'');
//如果为''',则前两个会看成一个''后面的'没有匹配的,则会报错,运用转义字符(下面会提到)‘\’,
//可以阻断第二个'与第一个'相结合。
return 0;
}
2.不同,数组arr3和数组arr2相同,其余数组打印的结果相同。
说明:%s打印时遇到‘\0’时终止打印,而arr3和arr2中没有‘\0’,因此会向后打印。
3.相同
#include <stdio.h>
int main()
{
printf("%c",0);
printf("%c",'0');
printf("%d", '0');
printf("%d", '\0');
return 0;
}
这里涉及字符与十进制进行转换,需要知道下面的转换表
在这张表上寻找0,‘0’,‘\0’,之间的关系应该就会柳暗花明了。
2.转义字符
定义:转变字符的意思
内容:
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
int len = strlen("c:\code\test.c\n");
printf("%d",len);
return 0;
}
打印的结果为:
2.数字符:
1——c,
2——:
3——\c(注意在vs 2019中 \加上字符被编译器认为是一个转义字符),
4——0,
5——d;
6——e,
7——\t,
8——e,
9——s,
10——t,
11—— . ,
12——c,
13——\n,
你数对了么?
注:在vs2019环境下编译
思考:如何将没被打印的打印出来?这里的结果为什么是13?
答案:1.\为转义字符会改变原有的意思,并且有着将阻断其他转义字符改变意思的功能。
#include <stdio.h>
int main()
{
printf("c:\\code\\test.c\\n");
return 0;
}