- 一、字符串
- 1打印字符串
- 2计算字符串长度
- 二、转义字符
- 1例题
- 2.经典面试题
- 三、 *** 作符
- 1单目 *** 作符
- 2条件 *** 作符(三目 *** 作符)
- 3逗号表达式
- 四、关键字static
- 五、总结
"hello world","This is a programm"
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注意: 字符串的结束标志是一个的转义字符。在计算字符串长度的时候是结束标志,不算做字符串内容。
代码如下(示例):
#includeint main() { char arr1[]="abc"; char arr2[]={'a','b','c'}; return 0; }
经过监视我们可以发现在arr1中隐藏了一个。这是因为C系统在用字符数组存储字符串常量时会自动加一个’’作为结束符,在arr1中共有三个字符,但是在数组中它占4个字节。
既然说是字符串的结束标志,呢加不加又有什么区别呢。
代码如下(示例):
#includeint 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二、转义字符 1例题#include int main() { char arr1[] = "abc"; char arr2[] = { 'a','b','c' }; printf("%dn", strlen(arr1)); printf("%dn", strlen(arr2)); return 0; }
假如我们要在屏幕上打印一个目录:c:codetest.c我们该如何写代码?是下面这样嘛?
代码如下(示例):
#includeint main() { printf("c:codetest.cn"); return 0; }
实际上程序的运行结果却是
为什么会出现这样的结果呢?其实是C语言所有非转义字符前面加上’‘会被忽略,所以’c’打印出来的就是’c’,以及t被识别为转义字符t(水平制表符)
下面我们介绍常用的一些转义字符
代码如下(示例):
#include#include 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的区别
代码如下(示例):
#includeint main() { int a = 10; int b = 11; b=++a; printf("a=%dnb=%d",a,b); return 0; }
#includeint main() { int a = 10; int b = 11; b=a++; printf("a=%dnb=%d",a,b); return 0; }
综述: 前置++,先++,后使用;
后置++,先使用,后++;
表达式1?表达式2:表达式3。可以理解为:先计算表达式1的值,如果表达式1的值为真(非0),自然直接到表达式2,如为假(0值)就绕过表达式2,到表达式3,如图所示。
使用逗号运算符是为了把几个表达式放在一起。整个逗号表达式的值为系列中最后一个表达式的值。从本质上讲,逗号的作用是将一系列运算按顺序执行。
代码如下(示例):
#includeint 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;
在C语言中:static是用来修饰变量和函数的1. 修饰局部变量-称为静态局部变量2. 修饰全局变量-称为静态全局变量3. 修饰函数-称为静态函数
在不使用static时
在使用static之后
在解析以上区别前先说明一个知识点,在内存中分为栈区,堆区和静态区;下图来说明内存的分布
在static修饰局部变量的时候,局部变量就变成了静态的局部变量出了局部的范围,不会销毁,下一次进入函数依然存在。其实是因为: static修饰的局部变量是存储在静态区的
static修饰局部变量时,实际改变的是变量的存储位置,本来一个局部变量是放在栈区的,被static修饰后放在了静态区。从而导致 出了作用域依然存在,生命周期并没有结束。
五、总结
以上就是本期字符串、转义字符、 *** 作符以及关键字static的一些理解与解析。
Hello world 我们下期见!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)