进化之路02

1.字符串

字符串就是一串字符---用双引号括起来的字符--如“The World”

字符串的结束标志是\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串内容

字符数组:

(1)char arr1[] = "abcd";实际上数组arr1中存放的是:a,b,c,d,\0; 数组元素个数为5。

(2)char arr2[] = {'a','b','c'};实际上数组arr2中存放的是:a,b,c。没有结束标志‘\0’。打印会出问题。数组元素个数为3

(3)char arr3[3] = {'a'};实际上数组arr3中存放的是:a,\0,\0。数组元素个数是3

(4)char arr4[3] = { 'a','b','c' };实际上数组arr4中存放的是:a,b,c。数组元素个数为3

计算字符串的长度:

strlen() ,头文件:#include

(1)首先看字符串本身的长度:

int len = strlen("abcd");//计算字符串abcd的长度,结果是4。说明'\0'并不作为字符串内容。

(2)其次来看字符串数组arr1的长度

char arr1[] = "abcd";

printf("%d\n", strlen(arr1));

结果是4,说明'\0'并不作为字符串内容

但是arr2是随机数,因为没有\0找不到结束符,一直计算长度,直到遇到\0。

2.转义字符

转义字符:转变了原来的意思

常见的转义字符:

(1)\?:在书写连续多个问号时使用,防止他们被解析成三字母词。那么什么是三字母词呢?这些三字母词在编译时会被替换成对应的字符。

(2)\':用于表示字符常量’,当想要像a一样输出'时,会报错,计算机会将此理解为两个单引号中缺失了一个,所以需要添加\以此来正确输出。

(3)\":和(2)一样

(4)\\:用于表示一个反斜杠,防止被解释为一个转义序列符。

(5)\a:警告字符

(6)\b:退格符

(7)\f:禁止符

(8)\n:换行

(9)\r:回车

(10)\t:水平制表符

(11)\v:垂直制表符

(12)\ddd:ddd表示1-3个八进制的数字。如:\130--X

(13)\xdd:dd表示2个十六进制的数字。如:\x30--0

转义字符算一个

注:进制转换:

1.组成

二进制:都是由0和1两个数字组成。

八进制:由0-7数字组成,为了与其他进制的数据区别,以0开始

十进制:以0-9数字组成,不能以0开头

十六进制:0-9和A-F组成,为了与其他数字区别,开头都是以0x开始

2.转换

进制转换(二进制、八进制、十进制、十六进制)超详细 - 知乎 (zhihu.com)

十进制转换其他进制:整数部分:除进制数取余,倒序输出

小数部分:乘进制数取整数部分,将整数部分顺序输出

3.选择语句

if---else---语句

4.循环语句

while循环

for循环

do---while循环

5.函数

6.数组

数组:一组相同类型的元素的集合

如图所示,定义数组,并查看数组中具体情况;

数组的访问:通过下标进行访问,第一个元素下标为0,依次增加。

打印数组:

7.操作符

(1)算术操作符

加+ 减- 乘* 除/ 取余%

(2)移位操作符

左移

右移>>:二进制位向右移

(3)位操作符

&:按位与

|:按位或

^:按位异或

(4)赋值操作符

=、+=、-=、*=、/=、&=、^=、|=、>>=、

(5)单目操作符

!:逻辑反操作

-:负值

+:正值

&:取地址

sizeof:操作数的类型长度(以字节为单位)

注:计算数组元素个数:int sz=sizeof(arr)/sizeof(arr[0]);

~:对一个数的二进制位按位取反

注:按位取反,对补码进行取反(包括符号位);技巧:无论正负数,先对数值本身+1,然后改变符号位

--:前置、后置--

++:前置、后置++

注:前置++:先++,后使用

后置++:先使用,后++

*:间接访问操作符(解引用操作符)

(类型):强制类型转换

int a = (int)3.14;

(6)关系操作符

>,>=,

(7)逻辑操作符

&& 逻辑与

|| 逻辑或

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

exp1 ? exp2 : exp3------exp1成立的话,计算exp2,整个表达式的结果的是exp2的结果

-------------exp1不成立的话,计算exp3,整个表达式的结果是exp3的结果

(9)逗号表达式:从左向右以此计算,取最右边的表达式结果作为整个表达式结果

exp1,exp2,exp3,.....

(10)下标引用、函数调用和结构成员

[ ]:数组下标引用操作符

( ):函数调用

.

->

8.常见关键字

1.C语言提供的,不能自己创建关键字

2.关键字不能做变量名

auto break case char const continue default do double else enum

extern float for goto if int long register return short signed sizeof

static struct switch typedef union unsigned void volatile while

3.typedef:类型重定义

4.关键字static

(1)static修饰的局部变量

本质上改变了变量的存储类型,将局部变量原来存放在栈区改变为存在于静态区,从而改变了生命周期,并且生命周期与程序一样。

(2)static修饰的全局变量

当不同a.c文件中定义的全局变量int g_val=2022,在另一个b.c文件中使用时需要重新声明外部符号,则使用extern int g_val;则可以在b.c文件中可以使用,全局变量在整个工程中可以使用。当使用static修饰全局变量时,此全局变量只能在自己所在的.c文件中使用,其他源文件不能使用。

注:全局变量在其他源文件中可以使用的原因是:全局变量具有外部链接属性,当static修饰之后,变成了内部链接属性,其他源文件就不能链接到整个静态的全局变量。

(3)static修饰的函数

同上述全局变量

static修饰函数,使得函数只能在函数自己所在的源文件内部使用,不能在其他源文件中使用,本质上将函数的外部链接属性变成内部链接属性。

5.define定义的常量和宏

define是预处理指令,

(1)#define MAX 100------定义常量

(2)define定义宏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值