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

浅谈:字符串、转义字符、 *** 作符、关键字。,第1张

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

文章目录
  • 一、字符串
    • 1打印字符串
    • 2计算字符串长度
  • 二、转义字符
    • 1例题
    • 2.经典面试题
  • 三、 *** 作符
    • 1单目 *** 作符
    • 2条件 *** 作符(三目 *** 作符)
    • 3逗号表达式
  • 四、关键字static
  • 五、总结

一、字符串 1打印字符串
"hello world","This is a programm"

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

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

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

2计算字符串长度

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

#include
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
#include
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 
int main()
{
    printf("c:codetest.cn");
    return 0;
}

实际上程序的运行结果却是

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

转义字符释义n换行t水平制表符(相当于键盘上Tab)dddddd表示1-3个八进制的数字.如:130Xxdddd表示2个十六进制数字.如30 2.经典面试题

代码如下(示例):

#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的区别
代码如下(示例):

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

#include
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
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 我们下期见!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存