【初始C语言】变量与字符

一. 变量

1.变量的命名

  1. 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
  2. 不能以数字开头
  3. 长度不能超过63个字符。
  4. 变量名中区分大小写的。
  5. 变量名不能使用关键字

拓展:来判断一下下面的定义对不对?

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;
}

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值