一、字符串
1打印字符串
"hello world","This is a programm"
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。 注意: 字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算做字符串内容。 代码如下(示例):
#include<stdio.h>
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
return 0;
}
经过监视我们可以发现在arr1中隐藏了一个\0。这是因为C系统在用字符数组存储字符串常量时会自动加一个’\0’作为结束符,在arr1中共有三个字符,但是在数组中它占4个字节。
2计算字符串长度
既然说\0是字符串的结束标志,呢加不加\0又有什么区别呢。 代码如下(示例):
#include<stdio.h>
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
以上代码会输出什么呢,让我们的代码跑起来看一下。我们可以看到arr1正常输出"abc",而arr2输出abc后输出很多文字,后面的文字是随机值,这就是我们前面所说的\0是字符串的结束标志。在执行printf函数时,每输出一个字符检查一次,看下一个字符是否为\0,遇\0就停止输出。 注意: 不只在输出字符串时,在使用strlen函数计算字符串长度时,计算的是\0前求出的字符个数。我们可以看到arr1计算结果为3,而arr2计算结果为42,是一个随机值。 代码如下(示例):
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
return 0;
}
二、转义字符
1例题
假如我们要在屏幕上打印一个目录:c:\code\test.c我们该如何写代码?是下面这样嘛? 代码如下(示例):
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
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("%d\n",strlen("c:\test\628\test.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=%d\nb=%d",a,b);
return 0;
}
#include<stdio.h>
int main()
{
int a = 10;
int b = 11;
b=a++;
printf("a=%d\nb=%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=%d\n", 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 我们下期见!
|