写在开头:本文结论均有验证,且从本人掘金账号转移至CSDN,如有错误,感谢反馈!!!
大家好,我是每天都在学习的云师傅,希望这篇文章对大家有所帮助。

目录

  • 1.C语言基础知识
  • 2.语法问题
  • 3.基本数据类型
  • 4.操作符
  • 5.关键字
  • 6.构造类型
    • (1)数组
    • (2)结构体
    • (3)枚举
  • 7.指针类型
  • 8.函数
  • 9.文件
  • 10.预处理

1.C语言基础知识

1.编译错误、链接错误和运行错误:

编译错误:一般指语法上的错误(少写;}等等)
链接错误:编译通过,但是无法运行(例如函数只声明,不定义,如图)
运行错误:一般指程序上的bug,使程序出现异常(指针越界等等)

2.进制

C语言中整型常量的表示有三种,八进制(0开头),十进制,和十六进制(0x开头)。
实型数据表示有两种,十进制小数形式和指数形式

3.子串

计算机术语,串中任意个连续的字符组成的子序列称为该串的子串。

4.自定义标识符(取名)

C语言的标识符不能以数字开头(如int 0a=0;)
标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成
并且首字符不能是数字,但可以是字母或者下划线。例如,正确的标识符:abc,a1,prog_to。1.  不能把[C语言关键字]作为用户标识符,例如if ,for, while等.
2.  标识符长度是由机器上的[编译系统]决定的,标准C声称[标识符]可以任意长。
但是具体还是得看编译器
3.  标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写。
4.  [标识符命名]应做到“见名知意”
C语言中把标识符分为三类:[关键字][预定义标识符][用户自定义标识符]
C程序的基本组成单位是 【函数】

6.格式化符号%i,%p

1.%i表示有符号十进制整数
它与%d相比较的优点:%i可以自动将输入的八进制或十六进制转换为十进制2.%p输出地址和%d结果是样的,只不过%p输出是16进制表示

2.语法问题

3.基本数据类型

1.char类型

char a='120' 只会存储最后一个字符,
这属于大小端问题,其次不必研究这种错误代码
再说一点:‘’中最多只能放四个字符

4.操作符

1.do while至少执行一次

2.操作符优先级(重要)

1   ()  []  .  ->                                                             从左至右
2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof  从右至左
3   * / %                                                                     从左至右
4   + -                                                                       从左至右
5   >> <<                                                                     从左至右
6   > >= < <=                                                                 从左至右
7   == !=                                                                     从左至右
8   &                                                                         从左至右
9   ^                                                                         从左至右
10  |                                                                         从左至右
11  &&                                                                        从左至右
12  ||                                                                        从左至右
13  ?:                                                                        从右至左
14   =  +=  -=  *=  /=   %=  |=   ^=   &=   >>=   <<=                         从右至左
15  ,                                                                         从左至右

3.if-else

: else只跟离自己最近的if结合

5.关键字

1.const修饰函数

被const指定了的函数的返回值表示为常量,
不能再当作变量被赋值(也就是不能出现在“=”的左边充当左值)
例如下图

6.构造类型

(1)数组

1.数组和链表

元素个数相同数组内存空间少比链表少
(因为链表要保存指向下个节点的指针,占用空间比数组更大)
数组支持随机访问,链表不具有随机访问的特性
插入和删除是链表优于数组,数组需要移动被删除或者插入位置之后的元素

2.柔性数组

结构体中,开辟堆空间时,减少free次数,提高内存利用效率
struct S{int a;
int arr[0];//大小未知,并且前面至少有一个成员,计算结构体大小时,
不考虑这个数组大小。
}
如何使用:malloc时,为其预留你想要的空间大小。
即malloc(sizeof(S)+10*sizeof(int));

3.数据的逻辑结构

数据的逻辑结构分为线性结构和非线性结构,线性表是典型的线性结构。
线性表的存储结构有顺序存储和链式存储

4.数组下标越大,遍历数组时间越长。 但是存取都是对单个位置操作的,下标多大在内存里都是地址,拿地址找数据速度都一样。
5.

顺序存取---链式存储;随机存取--数组;索引和散乱---哈希
“随机存取”指的是当存储器中的消息被读取或写入时,
所需要的时间与这段信息所在的位置无关,所以叫随机。因此,查询时,数组利用下标定位,时间复杂度为O(1),
链表定位元素时间复杂度O(n);
数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)

(2)结构体

1.同类型的结构体变量可以整体赋值。

 int a;struct S* ptr;
}S;int main()
{S s1 = { 10,&s1};S s2 ={1000,&s2};s1 = s2;printf("%d\n", s1.a);//会打印1000printf("%p\n", s1.ptr);return 0;
}

(3)枚举

枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。
枚举元素本身由系统定义了一个表示序号的数值,从 0 开始顺序定义
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。
如一定要把数值赋予枚举变量,则必须用强制类型转换。
还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。
枚举中若某一元素被赋值,则其后的元素值依次在原值上递加1
such:enum weekday{sun,mon,tue,wed,thu,fri,sat } a,b,c;a=sun;b=mon;c=tue;

7.指针类型

1.函数指针

通过指针调用函数的两种形式:
1、ret = (*p)();
2、ret = p();//可以发现*可有可无,但是如果加*,就必须带括号对函数指针赋值的两种形式:
1、pf = &func;
2、pf = func;//&这个操作和数组不同,不存在首元素之分
NULL 和 0 或 '\0' 打印的值,但类型,意义都不同,注意区分。
如图,可以注意到下面有类型不匹配的警告
注:NULL为一个宏 (void*)

8.函数

1.scanf函数:所有的“非输入控制符”都要原样输入。

1.scanf("a=%d", &a);//输入时,这里的a=也需要输入2.scanf中的格式控制符不能指明浮点数的精度,即scanf("%.2lf",a);不可以!!!如图3.* 是scanf函数中的一种修饰符,表示忽略该输入项,
使用方法为:放在%与格式d(或者s,c等)之间


2.输入输出

fgetc函数——读取成功,带回所读的字符,失败返回文件结束标志EOF(-1);
fputc函数——输出成果,返回值就是输出的字符,失败返回EOF;
fgets函数——读取成功,返回地址str,失败返回NULL;
fputs函数——输出成果,返回0,失败返回非0;

3.printf函数

printf("%d,%d",a,b,c);
//输出项个数少于格式描述符的个数呢,会输出不定值
printf("k=%%d\n",k);
// %是控制符,用 %% 表示输出一个百分号,%%d相当于字符转义字符%和d

9.文件

1.文件后缀

exe文件可直接运行,.obj文件不能运行。
因为.exe属于可执行文件,.
obj文件只是源代码生成可执行文件的过程中生成的过程文件。
在计算机DOS下,生成一个可执行文件,需要用编译器将源程序编译为obj文件,
再用链接器将obj文件链接成exe文件。
只有可执行文件才能直接运行。可执行文件还包括.sys文件 .com等类型文件。

10.预处理

1.宏定义

首先宏不仅仅可以写成函数,也可以定义符号常量;
其次宏替换不是在编译阶段,而是在预编译阶段;
最后,性能的影响是有的,但不能绝对的说是好的影响还是坏的影响,
这要看宏定义的好坏了,定义好了可以提高性能,定义不好就会拉低性能

[C语言]刷了1000道选择题,看看有没有你的知识盲区呢(第一弹)相关推荐

  1. 【1】刷了1000道二级C语言的题,这些题竟然还是易错题!!(附C语言完整知识点)

    @二级C语言考试 这几天我天天都在做C语言的题,从公共基础部分到C语言选择题部分,着重复习选择题部分.算下来已经刷了近1000道C语言的题了: 不过有些题明明是很简单的,却很容易错,它们容易混淆.看似 ...

  2. c语言中有关指针的选择题,关于C语言指针的几道选择题能选几道就几道吧万分感谢1. 若已定义 爱问知识人...

    1.  若已定义a为int型变量,则[ ]是对指针变量p的正确说明和初始化. (A) int *p=a:                                              (B ...

  3. 软考中的75道选择题

    这段时间做了几套前几年的软考试题,分为上午题和下午题.上午题为75道选择题,下午为五道知识应用的大题.这篇博客简单对上午75道选择题进行分析一下. 1--6,为计算机组成原理的题目,考查的基本上是计算 ...

  4. 刷了 1000 多道算法题,一点小小的心得!

    今天分享一下自己刷算法题目的经验. 首先,要明确你的目标,因为目标不同,刷算法的平台和方法也不同. 常见的目标有以下四种: 学习基本编程语法和思想 想找大厂工作,应对面试 算法竞赛 锻炼自己的思维 大 ...

  5. 刷了 1000 多道算法题,我想说……

    点击蓝字 关注我们 算法在编程中,是十分重要的,但学起来也是最困难的,也是最容易快速从入门到放弃. 不知道大家有没有遇到过以下这几种情况: 拿到题目一脸懵逼,不知道如何下手: 拿到题目后开始着手写代码 ...

  6. 1000道C语言和C++语言的练习题笔试题及答案 #0000-0050

    汇集1000道C语言和C++语言的练习题 (例题.笔试题.编程题.算法设计题),由我亲自配上答案(点此查看). 语法题我就不出了,那个没意思,看书就可以了. 本贴汇集50题 (0000-0050),持 ...

  7. 1000道Python题库系列分享24(41个客观题,numpy专题)

    封面图片:<Python程序设计基础(第2版)>,董付国,清华大学出版社 ============== 好消息:智慧树网APP"知到"中搜索"董付国" ...

  8. 1000道Python题库系列分享23(61个填空题)

    封面图片:<玩转Python轻松过二级>,董付国,清华大学出版社 ================= 本期题目,参考答案在文末: 温馨提示 关注本公众号"Python小屋&quo ...

  9. 1000道Python题库系列分享20(43道填空与判断题)

    本期题目: 参考答案: 温馨提示 进入公众号,通过菜单"最新资源"==>"历史文章"可以快速查看分专题的文章列表,通过"最新资源"== ...

最新文章

  1. 数据结构 — 双向链表
  2. 程序员的核心竞争力究竟是什么?
  3. 一次性掌握JDK、JRE、JVM的概念以及三者之间的关系【2021整理】
  4. MaintainableCSS 《可维护性 CSS》 --- 模板篇
  5. Hystrix面试 - 基于 Hystrix 信号量机制实现资源隔离
  6. centOS 7镜像文件下载
  7. 思科3524交换机配置vlan
  8. mysql 自动复制_MySQL复制 自动监控脚本-阿里云开发者社区
  9. 【2011-2012 ACM-ICPC Pacific Northwest Regional Contest】Collateral Cleanup【建图拓扑排序】
  10. Leetcode题解助手
  11. 阻抗匹配是什么意思?阻抗匹配原理详解
  12. Pytorch搭建ResNet网络进行垃圾分类
  13. android studio Statistic插件不显示
  14. 四川师范大学计算机系黄宇,黄宇-经济信息工程学院
  15. 如何使用思维导图做计划?这样绘制思维导图的方法你使用过吗?
  16. H3C交换机查询光功率
  17. 黑盒测试方法——边界值分析法
  18. numpy 分块矩阵
  19. 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记
  20. APP开发后如何运营?

热门文章

  1. element-ui table 指定单元格动态字体颜色设置
  2. Eclipse突然崩溃或电脑突然断电后,代码丢失找回
  3. 如何搭建神经网络模型,构建神经网络模型方法
  4. phpexcel导出-PHP_XLSXWriter
  5. 主流边缘计算的算法实例
  6. win10 桌面黑屏 只剩下回收站 C:\WINDOWS\system32\config\systemprofile\Desktp不可用
  7. java贪吃蛇系统架构_java贪吃蛇游戏框架搭建
  8. report_template
  9. 服务器柜机位置摆放电子图,柜式空调放在客厅什么地方好 客厅变频空调柜机正确摆放位置设计图...
  10. 网络里面共享计算机不见了怎么办,怎么找不到共享电脑,小编教你局域网中共享电脑找不到怎么办...