目录

  • 〇.写在前面
  • 一.数据类型及字节大小
  • 二.常量
  • 三.字符串和字符数组的区别
  • 四.移位操作符,位操作符和逗号表达式
    • 1.移位操作符
    • 2.位操作符
    • 3.逗号表达式
  • 五.隐式类型转换
    • 1.整形提升
    • 2.算术转换
  • 六.static关键字
    • 1.static对局部变量作用
    • 2.static对全局变量和函数作用
  • 七.const关键字
  • 八.二维数组

〇.写在前面

若读者朋友们发现问题,请不吝斧正。

一.数据类型及字节大小

char //字符数据类型 1字节
short //短整型 2字节
int //整形 4字节
long //长整型 4字节
long long //更长的整形 8字节
float //单精度浮点数 4字节
double //双精度浮点数 8字节

二.常量

C语言中的常量分为以下以下几种:
1.字面常量
2.#define 定义的标识符常量
3.枚举常量
4.const 修饰的常变量

int main()
{//1.字面常量3.14;100;'a';"hello world";//2.const修饰的常量const int num = 10;//num = 20;  (报错,无法修改)//3.define定义的常量#define MAX = 1000//4.枚举常量enum Sex{MALE,FEMALE};//枚举常量默认是从0开始,依次向下递增1的printf("%d\n", MALE); // 0 printf("%d\n", FEMALE); // 1return 0;
}

三.字符串和字符数组的区别

int main()
{char* str1 = "abcde";char str2[6] = { 'a','b','c','d','e','\0' };char str3[6] = "abcde";char str4[5] = "abcde";char str5[5] = { 'a','b','c','d','e' };return 0;
}


1.字符串(“abcde”)最后会有一个/0
2.字符数组({ ‘a’,‘b’,‘c’,‘d’,‘e’ })不会携带/0
3.注意:
char str3[6] = “abcde”;
char str4[5] = “abcde”;
二者居然都可以,区别在于str3多存了一个\0;

四.移位操作符,位操作符和逗号表达式

1.移位操作符

左右移位操作符都是操作的内存中的二进制数

左移操作符: <<
左边去掉,右边补0

int main()
{int a = 1;a << 1;
}

右移操作符: >>
右移操作符分为以下两种

  1. 逻辑移位 对应无符号数(unsigned)
    左边用0填充,右边丢弃
  2. 算术移位 对应有符号数(signed)
    左边用原该值的符号位填充,右边丢弃

2.位操作符

位操作符只能对整数作用,直接操作内存中的二进制数

(1)按位与(&): 同为1得1,其他得0
(2)按位或(|): 同为0得0,其他得1
(3)按位抑或(^): 相同得0,不同得1

3.逗号表达式

逗号表达式从左到右依次执行,逗号表达式的结果为最后一个表达式的结果

 int main(){int a, b, c, d;a = 0;b = 1;//c的值为4c = (b++,a=a+b,a+b);//注意:没有括号不是逗号表达式,只是分开运算a = 0;b = 1;//d的值为1d = b++, a=a+b, a+b;return 0;}

五.隐式类型转换

1.整形提升

(1)当使用某些操作符(如+,-,*,/)时,如果被操作的数据类型的大小小于int(4个字节)时,会在使用之前被转换成整形大小。
(2)整形提升的规则:按符号位提升

2.算术转换

(1)如果某个操作符的各个操作数属于不同的类型,那么需要先将两个操作数转换为相同的类型,之后才能进行操作。
(2)算术转换先后顺序:
long double
double
float
unsigned long int
long int
unsigned int
int
下层的数据要转换为上层的数据之后才能进行操作。
(3)关于如何实现隐式类型转换的,c++的原理是运算符重载。

六.static关键字

1.static对局部变量作用

void test()
{static int i = 0;i++;printf("%d ", i);
}int main()
{int j = 0;for (j = 0;j < 10;j++){test();}return 0;
}
// 1 2 3 4 5 6 7 8 9

static对局部变量作用时,会改变它的生命周期,使它不会在函数结束后被销毁。

2.static对全局变量和函数作用

static对全局变量和函数作用时,会使它只能在本源文件中被使用,若在工程中其它的源文件中调用会报错。

七.const关键字

(1)const作用于变量时,会使它的权限降低,从可读可写变为可读。
(2)const作用指针时,放的位置不同,有不同的意义。
(3)当const作用的变量作为函数参数传参时,如果函数内部可能改变此变量,则会报错。此时必须把函数的形参也用const修饰。这里的本质问题是权限放大。

八.二维数组

 int arr1[2][3] = { 1,2,3,4,5,6 };int arr2[2][3] = { {1,2,3},{4,5,6} };int arr3[][3] = { 1,2,3,4,5,6 };int a = arr1[0][2];

(1)二维数组和一维数组一样,未初始化的部分默认为0
(2)二维数组可以省略行号,不能省略列号
(3)以arr1为例,arr1[0]和arr[1]可以看做一个一维数组,整个arr1就可以看做以一维数组为元素的数组,所以arr1+1的地址就是arr1[1](数组的第二个元素)

c语言的查漏补缺(一.几个容易忘记的点)相关推荐

  1. C语言——基础查漏补缺(三):谭浩强红书刷题笔记大杂烩

    相关文章: C语言--基础查漏补缺(一):超长文帮你理清一些概念 C语言--基础查漏补缺(二):<C程序设计试题汇编>应试概念总结 C语言--基础查漏补缺(四):利用<挑战程序设计竞 ...

  2. C/C++基础查漏补缺(八)----------寒假学习笔记(八)

    寒假C语言基础查漏补缺笔记(八) 本系列文章是基于自身的编程基础而编写的,其内容并非适用于所有人,请海涵~ 不过内容应该包括了所有的考点.用法,初学C/C++的大学生或者noip入门级选手可以以此作为 ...

  3. C/C++基础查漏补缺(一)----------寒假学习笔记(一)

    寒假C语言基础查漏补缺笔记(一) 本系列文章是基于自身的编程基础而编写的,其内容并非适用于所有人,请海涵~ 不过内容应该包括了所有的考点.用法,初学C/C++的大学生或者noip入门级选手可以以此作为 ...

  4. 2019/5/12 查漏补缺

    目录 2019/5/12 查漏补缺 数据类型分为两大类:基本类型和引用类型: java中类的继承关系 关于接口 重载和重写 静态变量 java中的关键字和保留字 数据库操作 实现数据库收回部分权限的操 ...

  5. 无效字符 java_Java知识查漏补缺

    Java基础知识查漏补缺 单元测试中,Mock对象的存在破坏了面向对象中的封装 mock对象:也成为伪对象,在测试中的利用mock对象来代替真实对象,方便测试的进行. java的封装性:指的是将对象的 ...

  6. Mysql查漏补缺笔记

    目录 查漏补缺笔记2019/05/19 文件格式后缀 丢失修改,脏读,不可重复读 超键,候选键,主键 构S(Stmcture)/完整性I(Integrity)/数据操纵M(Malippulation) ...

  7. java怎么快速补缺_Java基础查漏补缺(1)

    Java基础查漏补缺 String str2 = "hello"; String str3 = "hello"; System.out.println(str3 ...

  8. 30 分钟 HTTP 查漏补缺之 Vary

    写在前面 最近抽空参加了几场大厂的面试,突然发现一个现象,就是不论面试偏服务端的职位还是偏客户端的职位,不论面试的 5 年以上的高级职位,还是 3 年左右的中级职位,面试官开头所问问题必然是关于 HT ...

  9. 查漏补缺:Java10之后,var成为关键字了吗

    Java 10引入了一个新功能:局部变量类型推断(LVTI).对于局部变量,可以使用 "var" 代替实际类型,也就是像js一样,可以通过 var 定义变量.那么 var 是新增加 ...

最新文章

  1. The way to Go(6): Go程序的基本结构和要素
  2. 知乎高赞:iOS 为什么感觉比 Android 流畅?
  3. 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
  4. 手把手指导centos7中安装python3
  5. linux7为nginx添加服务,CentOS7添加Nginx为系统服务
  6. python小明爬楼梯_LintCode Python 简单级题目 111.爬楼梯 (斐波纳契数列 青蛙跳)
  7. JqGrid3.6最终版本今天发布了
  8. 运动世界校园3.0版本逆向分析破解
  9. jenkins集成kettle
  10. Python语音识别终极指南(收藏)
  11. 使用极大似然法对逻辑回归中的参数进行估计的数学原理
  12. 利用百度api接口制作在线语音合成软件
  13. 图像标注工具CVAT
  14. 如何设置 RecyclerView Item内子控件点击事件
  15. 开发中的各种时间格式转换(三)
  16. 大数据 hadoop 经典面试题 | 一
  17. 支付宝扫码支付示例源码
  18. sap 用户权限表_sap权限相关后台表
  19. python小游戏:像素鸟
  20. mysql安装后目录介绍,MySQL安装后的目录结构及配置文件详解

热门文章

  1. android 如何使得电阻屏在第一次开机时自动叫起屏幕校准程序
  2. DTO(数据传输对象)模式
  3. 18 矩阵——矩阵的秩、行阶梯形矩阵与秩、行列式与秩、特征值与秩、二次型与秩、矩阵秩的计算、关于秩的常用结论
  4. android拍照所需的权限,eclipse --- Android拍照,相册选择图片以及Android6.0权限管理...
  5. 深度解读京东金融App(Android)的秒开优化实践
  6. 实战gdbserver
  7. 求职简历PPT模板怎么写?
  8. Android 低功耗蓝牙开发
  9. 为您带来摹客iDoc这款PS自动标注,一键切图神器的超详细教程!速看!
  10. android内置第三方APP为系统应用,第三方APP内置到/system/app目录下报错java.lang.UnsatisfiedLinkError,so文件不加载