C语言--基础且易错知识点(2)

数组

特别需要注意以下情况:

C语言--基础且易错知识点(2)_第1张图片

  具体分析如下:

C语言--基础且易错知识点(2)_第2张图片

操作符

注意:取模操作符(%

 " % " 操作符只能作用于整型。

C语言--基础且易错知识点(2)_第3张图片

C语言--基础且易错知识点(2)_第4张图片

位操作符&( 按位与)、^ (按位异或  )、| (按位或)

 C语言--基础且易错知识点(2)_第5张图片

 单目操作符

sizeof   操作数的类型长度(计算的是变量或者类型所创建的变量占据内存的大小,单位是字节。

(类型)  强制转换类型  正确的写法:int n=(int)3.14; 错误的写法:int n=int(3.14); error

  按位取反是对存在内存中的补码(二进制)进行取反的。

 补充说明:原码 反码 补码

C语言--基础且易错知识点(2)_第6张图片

++( 前置++和后置++)前置++:先做加法后使用赋值 ;后置++:先使用赋值后做加法。

-- ( 前置++和后置++)前置--:先做减法后使用赋值 ;后置--:先使用赋值后做减法。

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

exp1?exp2:exp3 (若exp1成立执行exp2,不成立执行exp3)作用:简化if语句

例如:  int max=(a>b?a:b);    (a如果大于b执行a;否则执行b)

逗号表达式  (exp1,exp2,exp3,........expN)

逗号表达式从左向右依次进行计算,整个逗号表达式的结果是最后一个表达式的结果。

C语言--基础且易错知识点(2)_第7张图片

关键字 typedef (类型重命名)

具体用法如下所示:

C语言--基础且易错知识点(2)_第8张图片

 关键字static(static是用来修饰变量和函数的)

1.修饰局部变量---静态局部变量

static修饰的静态局部变量,其实是改变了变量的存储类型(栈区存储-------->静态区存储),从而使得静态的局部变量只执行初始化一次,并且出了自己的作用域也不会被销毁,而且延迟了局部变量的生命周期,再到程序运行结束以后才释放。

对比以下两种情况,就可以更加清晰的了解static。

C语言--基础且易错知识点(2)_第9张图片

 C语言--基础且易错知识点(2)_第10张图片

 2.修饰全局变量---静态全局变量

全局变量默认是具有外部链接属性的,作用域是整一个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern全局变量声明就可以使用全局变量,但是用static修饰全局变量后,就变成了内部链接属性,这个全局变量的作用域就变成了声明此变量所在的文件里,其他文件即使使用extern声明也不能使用。

3.修饰函数--静态函数

函数本身也是具有外部链接属性的,用static修饰一个函数后,就变成了内部链接属性,使得这个函数只能在自己所在的文件中被调用,不能被其他文件调用。

注:static修饰的变量存放在全局数据区的静态变量区,包括全局静态变量和局部静态变量,都在全局数据区,初始化的时候自动初始化为0。考虑使用static修饰的情况一般有:不想被释放的时候或者考虑到数据的安全性的时候。

宏的定义:#define 宏名  宏体  (宏体可以是数字、表达式、函数、if语句等)

结尾不需要加分号,如果加了分号会一起被替换!宏定义必须写在函数之外如果要终止其作用域用 #undef 宏名 命令,在之后的代码将不会在被使用。宏名若被引号修饰,则程序处理不会被宏代替。宏名通常使用大写。

例如:

#define M 10 

#define N (n*n)   //在编写代码时,所有出现(n*n)的地方都可以用N来表示。

#define ADD(x,y) ((x)+(y))    //宏体是函数(一个加法函数)

指针 (简单了解指针)

内存:存储器,计算机中的程序运行都是在内存中进行的,每一个内存单元是1个字节。

在编译代码时,创建变量就会在内存中开辟空间,因此每一个变量就会有与之对应的地址,而我们想要通过地址间接的访问这个变量的值,就需要得到这个地址。

所以我们就需要创建一个变量来存这个地址,通过操作符"& (取地址)"可以取得变量的地址,然后存进去这个变量中,所以这个变量存储的是地址,我们就叫这个变量为指针变量。然后再通过操作符" * (解引用) "来获得地址对应变量的值。(简单的描述)

具体代码如下:

C语言--基础且易错知识点(2)_第11张图片

结构体

访问结构体的两种方式

1.(结构体变量.结构体成员)

2.(结构体指针->结构体成员)

 具体代码如下:

C语言--基础且易错知识点(2)_第12张图片

 

你可能感兴趣的:(C语言学习,c语言,开发语言,后端)