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

C语言(字符串,转义字符,关键字)

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

C语言(字符串,转义字符,关键字)

 一、字符串 1、什么是字符串

字符:‘a’ ‘@’

字符串:“abc” “hello  world”

这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注:字符串的结束标志是一个  的转义字符。在计算字符串长度的时候  是结束标志,不算作字符串内容。
 

 2、举个例子
#include
#include //strlen函数的头文件
int main()
{
char arr1[] = "abc";  
char arr2[] = { 'a', 'b', 'c',};
printf("%dn", strlen(arr1));  //输出3
printf("%dn", strlen(arr2));  //输出随机值
printf("%sn",arr1);
printf("%sn",arr2);
return 0;
}

 这样写的话打印结果会完全不一样,打印结果如图: 

 为什么第二个arr2abc后面会打印出这么多文字呢?

这是因为arr1中字符串abc后面隐藏一个结束标志,而arr2中是三个字符没有,因此要它停下来需要往后寻找,所以产生随机值。如何修改呢,就是要在后面添加一个,来表示结束位。

#include
#include
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c', };
	char arr3[] = { 'a','b','c',''};
	printf("%dn", strlen(arr1));
	printf("%dn", strlen(arr2));
	printf("%dn", strlen(arr3));
	printf("%sn", arr1);
	printf("%sn", arr2);
	printf("%sn", arr3);
	return 0;
}

结果如图:

注意:

1.strlen的作用是计算字符串在内存中所占的空间大小,需要#include这个头文件去包含。上个文章用到了sizeof,sizeof是用来计算变量或者使用类型创建的变量的大小,单位是字节。
2.%s打印字符串,%c打印字符。

二、转义字符 1、什么是转义字符:

转义字符是指,用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字符表示的含义,因此称为“转义”。
比如 C 语言中,用“n”来表示换行,“r”表示回车,“t”表示跳格等等,它们本身只是一个反斜杠和一个字母,但是却被赋予了特殊的意义
我们先来看一下这一段代码打印的是什么:

#include
 int main()
{
    printf("c:codetest.c");
  return 0;
}

这个打印的就是  :  c: code est.c     ‘t’就是转义字符。

转义顾名思义就是转变意思。上述实例c、因为c本身不是转义字符,所以输出本身;t代表水平制表符,所以不输出c:codetest.c

printf("(hehe??)");                   //打印(hehe??)
printf("%c",''');                      //打印'
printf("%s",""");                      //打印"
printf("c:\test\104\test.c");        //打印c:test104test.c
printf("aaaa");                     //电脑蜂鸣
printf("%cn", '130');                 //8进制的130转化成十进制数88作为ASCLL值所对应的符号:X
printf("%cn", 'x40');                 //16进制的40转化成十进制数64作为ASCLL值所对应的符号: @
2、看一道计算题:
#inlude
#include
int main(){
printf("%dn", strlen("c:test628test.c"));
//62被解析成一个转义字符
return 0;
}
 该程序输出什么呢?

  输出14  分别为是:c,:,t,e,s,t,62,8,t,e,s,t,.,c

注意:1、8进制没有8

           2、转义字符整体算做一个字符。

ddd: ddd表示1~3个八进制的数字 如:130 x

xdd: dd表示2个十六进制数字       如:x40 @  其他转义字符就不一一列举了

三、关键字

关键字有很多,我就举出常用的几个:

1关键字register

(1)拓展

      在介绍关键字 register 之前,我们先了解一下计算机中数据的存储,计算机的储存单元为:寄存器——>内存——>硬盘,在计算机中为了适配CPU的处理速度出现了寄存器,在计算机的存储单元中,寄存器的读写速度是最快的。我们现在需要了解的是:CPU 并不会直接和每⼀种存储器设备直接打交道,而是每⼀种存储器设备只和它相邻的存储器设备打交道。当然了,话说回来,我们现在只需要知道在计算机的存储单元中,寄存器的读写速度是最快的。

(2)关键字register的简单使用

       现在我们已经知道寄存器的读写速度是非常快的,因此当我们想要处理大量且频繁被使用的数据时,就可以将其放到寄存器中,从而提高处理效率。例如下面代码:

#include
int main()
{
   //假设num被频繁的使用
   register int num=10000;//将num放到寄存器中,提升效率 
   return 0;
}
2、关键字typedef 

   typedef,顾名思义就是类型重定义的意思,即把一个类型的名字定义成一个新名字,当需要多次输入一个相同类型时,typedef提供了很好的便携性。

typedef unsigned int unit;  //我们通过重命名,将unsigned int命名为unit
int main()
{
	unsigned int num1 = 10;
	unit num2 = 20;
  //num1与num2类型一样
	return 0;
}

unsigned int,是无符号整型的意思。unsigned的取值范围在0-2^32。不能表示负数。每一种整型(int short long longlong)都有无符号(unsigned)和有符号(signed)两种类型,在一般情况下的整型变量都是有符号的,如果需声明无符号的话就会在类型前加上unsigned。

3关键字static

在c语言中:static是修饰变量和函数的,它主要三种使用形式:

(1)修饰局部变量——称为静态局部变量

void test()
{
	int a = 1;
	++a;
	printf("%d ", a);
}
int main()
{
	int i = 0;
	while (i < 5)
	{
		test();
		i++;
	}
	return 0;
}

这个的输出结果是:2 2 2 2 2

void test()
{
	static int a = 1;
	++a;
	printf("%d ", a);
}
int main()
{
	int i = 0;
	while (i < 5)
	{
		test();
		i++;
	}
	return 0;
}

         这个的输出结果是 2 3 4 5 6,为什么int前面加上了static输出结果不一样了呢,这里就引出了static修饰局部变量的作用:

          我们现在要说一下局部变量生命周期是什么:从进入作用域生命周期开始,出作用域生命周期结束。因此,程序1每次调用test函数都要经历变量的创建和销毁,所以每次打印出a的值都是2(1+1)。而对于程序2,test函数中的a变量被static修饰,而static关键字的作用是改变局部变量的生命周期。也就是说变量a的生命周期不在局限在test函数内部,而是整个程序,因此调用test函数a变量只创建一次,在程序结束时才会销毁,因此循环五次输出2,3,4,5,6

结论:普通的局部变量是存储在栈区的,被static修饰的变量是存储在静态区的,static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。(本质上:改变了变量的储存类型)
  (2)修饰全局变量——称为静态全局变量

我们已知全局变量的作用域是整个工程,调整整个工程中任何地方都能使用:

  但是当我们用static关键字修饰全局变量,使得这个全局变量只能在本源文件中使用,在其他源文件中使用就会报错:

 结论:一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用,这个全局变量只能在自己的.c文件中看到,其他源文件看不到了(本质上:是因为全局变量具有外部连接属性,被static修饰后就变成了内部连接属性)。

(3)修饰函数——称为静态函数

其实static修饰全局变量和修饰函数原理的原理相同,详见下图:

在int前面加上static,再来运行,就会报错: 

 结论:一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用(本质上:static是将函数的外部链接属性变成了内部链接属性)

 static就是使自己创建的全局变量与函数只能使自己看到与调用,不希望其他人调用。

这就是我这几天总结的知识,希望对大家有帮助。

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

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

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