浅谈:字符串、转义字符、操作符、关键字。

一、字符串

1打印字符串

"hello world","This is a programm"

这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注意: 字符串的结束标志是一个的转义字符。在计算字符串长度的时候是结束标志,不算做字符串内容。
代码如下(示例):

#include<stdio.h>
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
return 0;
}

经过监视我们可以发现在arr1中隐藏了一个。这是因为C系统在用字符数组存储字符串常量时会自动加一个’’作为结束符,在arr1中共有三个字符,但是在数组中它占4个字节。
在这里插入图片描述

2计算字符串长度

既然说是字符串的结束标志,呢加不加又有什么区别呢。
代码如下(示例):

#include<stdio.h>
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%sn",arr1);
printf("%sn",arr2);
return 0;

以上代码会输出什么呢,让我们的代码跑起来看一下。我们可以看到arr1正常输出"abc",而arr2输出abc后输出很多文字,后面的文字是随机值,这就是我们前面所说的是字符串的结束标志。在执行printf函数时,每输出一个字符检查一次,看下一个字符是否为,遇就停止输出。
在这里插入图片描述
注意: 不只在输出字符串时,在使用strlen函数计算字符串长度时,计算的是前求出的字符个数。我们可以看到arr1计算结果为3,而arr2计算结果为42,是一个随机值。
代码如下(示例):

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a','b','c' };
	printf("%dn", strlen(arr1));
	printf("%dn", strlen(arr2));
	return 0;
}

在这里插入图片描述

二、转义字符

1例题

假如我们要在屏幕上打印一个目录:c:codetest.c我们该如何写代码?是下面这样嘛?
代码如下(示例):

#include <stdio.h>
int main()
{
    printf("c:codetest.cn");
    return 0;
}

实际上程序的运行结果却是
在这里插入图片描述
为什么会出现这样的结果呢?其实是C语言所有非转义字符前面加上’‘会被忽略,所以’c’打印出来的就是’c’,以及t被识别为转义字符t(水平制表符)
下面我们介绍常用的一些转义字符

转义字符 释义
n 换行
t 水平制表符(相当于键盘上Tab)
ddd ddd表示1-3个八进制的数字.如:130X
xdd dd表示2个十六进制数字.如30

2.经典面试题

代码如下(示例):

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

应该打印多少呢,有人说13,有人说14.相信你看完以上内容后会有正确的答案。让我们代码运行起来看一下.
在这里插入图片描述
解析: 这里t,62被分别解析为水平制表符与8进制数字。说13的人一定是讲628都视为8进制数字了,在这里一定要注意ddd为8进制数字而62才为8进制数字。要注意这个坑,哈哈哈哈哈。

三、操作符

操作符中有算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员等。在这里重点介绍以下几种。

1单目操作符

重点区分: i++和++i 与i–和--i的区别
代码如下(示例):

#include<stdio.h>
int main()
{  
   int a = 10;
   int b = 11;
   b=++a;
   printf("a=%dnb=%d",a,b);
   return 0;
}

在这里插入图片描述

#include<stdio.h>
int main()
{  
   int a = 10;
   int b = 11;
   b=a++;
   printf("a=%dnb=%d",a,b);
   return 0;
}

在这里插入图片描述
综述: 前置++,先++,后使用;
            后置++,先使用,后++;

2条件操作符(三目操作符)

表达式1?表达式2:表达式3。可以理解为:先计算表达式1的值,如果表达式1的值为真(非0),自然直接到表达式2,如为假(0值)就绕过表达式2,到表达式3,如图所示。
在这里插入图片描述

3逗号表达式

使用逗号运算符是为了把几个表达式放在一起。整个逗号表达式的值为系列中最后一个表达式的值。从本质上讲,逗号的作用是将一系列运算按顺序执行。
代码如下(示例):

#include<stdio.h>
int main()
{
	int a = 3;
	int b = 20;
	int c = 0;
	int d = (a -= 3, b += a, c = a - b, b = a - 4);
	printf("d=%dn", d);
	return 0;
}

第一个表达式使a=0,第二个表达式b=20,第三个表达式c=-20,第四个表达式b=-4,因为表达式从左向右依次计算,但整个表达式的结果是最后一个表达式的结果,所以应打印d=-4;
在这里插入图片描述

四、关键字static

在C语言中:static是用来修饰变量和函数的1. 修饰局部变量-称为静态局部变量2. 修饰全局变量-称为静态全局变量3. 修饰函数-称为静态函数
在不使用static时
在这里插入图片描述
在使用static之后
在这里插入图片描述
在解析以上区别前先说明一个知识点,在内存中分为栈区,堆区和静态区;下图来说明内存的分布
在这里插入图片描述

在static修饰局部变量的时候,局部变量就变成了静态的局部变量出了局部的范围,不会销毁,下一次进入函数依然存在。其实是因为: static修饰的局部变量是存储在静态区的
static修饰局部变量时,实际改变的是变量的存储位置,本来一个局部变量是放在栈区的,被static修饰后放在了静态区。从而导致 出了作用域依然存在,生命周期并没有结束。


五、总结

以上就是本期字符串、转义字符、操作符以及关键字static的一些理解与解析。

?Hello world 我们下期见!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>