C语言笔记(进行中)!!!
创始人
2024-03-21 18:43:51
0

入门:解释与编译的区别:解释性语言运行的时候需要解释器(比如Java需要JVM解释器,Python需要Python解释器),而编译性语言可以直接机器码。
    黑黑的框:-->终端、命令行、控制台。./
    程序框架都要有**;结束都要有分号;有些地方换行和空格不影响程序;不要用中文全角,中文输入法;
1.void 在英文中作为名词解释为“空虚,空间,空隙”,而在C语言中,void被翻译为“无类型”,相应的void*为“无类型指针”。
2.#include(包括):编译预处理命令一般地,在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件。
3.stdio 就是指 “standard input & output"(标准输入输出)
所以,源代码中如用到标准输入输出函数时,就要包含这个头文件!
注意:// 单行注释                 /* 
                     多行注释
                      多行注释
                      多行注释
                     */
4.数据基本类型:
    算术类型,包括两种类型:
        整数类型:字符型char(1个字节),短整型short (2),长整型long(>=4),基本整型int(4),双长整型long long(8),布尔型bool(1)
        注意:1.bool是布尔型变量,也就是逻辑型变量的定义符,类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。 
        2.布尔型变量的值只有 真 (true) 和假 (false)。3.最好别用bool,bool变量可用int代替。
        浮点类型:单精度浮点型float(4),双精度浮点型double(8),多精度浮点类型long double(8)------详见配图
    枚举类型,(enum):1.取值:默认从零开始,以此递增1,也可以自定义数值。2。枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。
    (不熟)         枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.
                例如:
                    enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };
            优点:1.增加代码可读性和可维护性
                      2.和define定义的标识符相比,枚举有类型检查更加严谨
                      3.防止了命名污染(封装)
                      4.便于调试,define不便于调试,调试时是已替代的内容
                      5.使用方便,1次可以定义多个常量
    整型进制:1,默认为10进制 ,10 ,20
         2,以0开头为8进制,045,021
         3.,以0b开头为2进制,0b11101101
         4,以0x开头为16进制,0x21458adf
    其他类型:1.指针类型:char*、int*、void*......(char*不一定指的是字符串)
        2.数组类型:int ar[]
        3.机构体类型:成员:可以是标量、数组、指针、甚其他结构体,通过点操作符(.)访问
        (不熟)        一般形式如下:

                struct<结构体名><结构体变量名>;

                eg:struct student student1,student2;

                关键字struct要与结构体名student一起使用,共同构成结构体类型名。
                 内存对齐:1.自身类型有一个对齐值
                     2.自定义类型有个对其值(内部成员最大的那个)
                     3.程序有个指定的对齐值
                     4.程序有个有效的对齐值     注:后面后又了解!
                  对齐原因:1.平台原因(移植原因)
                       2.性能原因:对齐的内存访问仅需一次
                  位段(位域)1.节省空间,但不能跨字节储存
                          2.不能跨类型储存     *超出的高位会被丢弃
                  结构体传参1.传值传参
                      2.传址传参(相较于前者更好一点,省去了开辟更大的空间)
                  联合体(union)1.按照内部最大的成员大小定义空间(应保证至少有能力保存最大的那个成员)
                          2.当最大成员大小不是最大对其数的整数倍时,要对齐到最大对其值的整数倍
                    3.可用于判断大小端、表示点分十进制
                  函数类型:void fun()
4.运算符(要注意优先级)1.算术运算符:(+ - * / %(取余) ++ --)
              2.关系运算符:(> < = >= <= !=)
              3.逻辑运算符:(!(假) &&(和) ||(或))
              4.赋值运算符:(= += -= *= /= %=)
              5.位运算符:(<<(远小于) 、>>(远大于)、 ~(一种单目操作符,即对一个数的二进制按位取反)、 |(有1为1,全0为0)、 
              ^(其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1)、 &)(地址)
              6.条件运算符:(? :)三目操作符    例子:<表达式1>?<表达式2>:<表达式3>;
              返回值:先求表达式 1 的值,如果为真,则执行表达式 2,并返回表达式 2 的结果;如果表达式 1 的值为假,则执行表达式 3,并返回表达式 3 的结果
              7.逗号运算符:(,)操作数从左向右一次执行,最终结果为逗号最右边的值。(比较基本)
              8.指针运算符:(* &)不能对空指针进行解引用 ++ --操作
5.语句1.分支语句:1.if语句:else与之最近的if相匹配
                         2.switch语句:每一个case后的break语句不可省;最后一个分支default语句不可省,每个case具有一个唯一值;
                    switch(整型表达式){case:整型常量表达式...}
                         3.goto语言:在需要跳转的语句前加标签,尽量避免使用( 语句用于在一个程序中转到程序内标签指定的位置,标签实际上由标识符加上冒号构成)
         2.自由主题:1.for循环语句:注意边界问题、控制变量尽量采用“半开半闭区间”不可在循环体内部修改变量
                2.while循环语句:嵌套循环,只跳出内层循环
                3.do while 循环语句:与while语言相同,但先执行一次在进行循环
6.数组1.一维数组:数组名表示数组首元素地址,当数组名作为sizeof或&的操作数时,数组名表示整个数组
         2.二维数组:相当于一维数组,区别在于其第一维元素其实是一个数组,数组名表示整个数组,当数组名作为sizeof或&的操作数时,数组名表示数组的第一行。
         3.指针数组:int*arr[](整型指针数组) char*arr[](字符型指针数组)
         4.函数指针数组:int (*p[5])(int,int)p先和[]结合,数组内容是int(*)(int,int)的函数指针
         5.柔性数组:特点:1.结构体中柔性数组成员前必须至少一个其他成员;
              2.sizeof返回这种结构的大小不包括柔性数组的内存;
              3.包括柔性数组的结构用malloc()函数分配内存时,分配内存应大于结构大小
                优点:1.方便释放内存
              2.减少内存碎片,提升访问速度
7.内存分布:1.栈区:由编译器自动分配释放,存放为运行函数分配的局部变量、函数形参、返回数据、返回地址等。操作方式类似于数据结构中的栈
       2.堆区:一般由程序员分配释放,若程序员不释放,程序结束时由OS回收
       3.全局区(静态区):相对而言的全局,不绝对,存放全局变量、静态数据程序结束后由系统释放
       4.文字常量区:存放常量字符中,程序结束后由系统释放
       5.程序代码区:存放函数体(类成员函数和全局函数)的二进制代码
8.字符串:1.结尾有'\0'的字符数组,字符串由有有效字符和字符串结束符‘\0‘组成。
    2.数组的长度至少是字符串长度+1,‘\0’不是字符串的内容,’\0’并不算入字符的长度。
    3.‘\0’是结束的标志,,决定是否结束循环;
    4.static char s[6]={'h','a','p','p','y','\0'};
       static char s[6]="happy";(这种两种形式进行初始化。)
    注意:用“”进行初始化;
    5.数组与指针有着天然的联系;1.构建用数组,处理用指针;
10.格式控制符
    十进制的整型: %d %md %ld %u (无符号) %lu
    八进制: %o %#o # --> 输出进制的符号
    十六进制: %x %#x %#X
    字符: %c
    字符串: %s
    单精度浮点: %f %.nf --> n 表示精度
    双精度: %lf
    长双精度 : %Lf
    地址: %p
11.break 与 continue
    break: 跳出循环结构 / 跳出当前层的循环
    continue : 结束当前这一次循环,重新进入下一次的循环

相关内容

热门资讯

爱回收、同城帮二手回收乱象:砍... 出品|搜狐科技 作者|郑松毅 编辑|杨锦 家里放着淘汰的旧手机,想卖掉回血却怕踩坑?不少人都抱着“能...
青海五年完成省级地方性法规和规... 中新网西宁12月27日电(祁增蓓)26日,记者从“‘十四五’发展成就”系列主题新闻发布会青海省司法厅...
新《海商法》中海上货物运输制度... 开栏寄语 《中华人民共和国海商法》完成全面修订并正式实施,这标志着我国海事法治建设进入新阶段,为加快...
2025年读书笔记(上):《乔... 小崔律师认为书单与歌单一样,实际上是非常私人化的内容,只有选择而无好坏之分,所谓的推荐其实只是对20...
原创 政... 忍无可忍的食堂承包商的一纸实名举报,撕开了河南省周口市淮阳人民中学从餐费中强行超高抽成,从学生口中夺...
小学女教师和校长的“窗帘纠纷”... 近日,关于一名女教师向校长申请安装窗帘遭到拒绝的事件,有了最新进展。 根据报道,该女教师所在的班级...
年度盘点丨十大关键词,看楼市政... 获取最新政策解读报告 ☞ 戳这里,加入地产/物业/投拓/产城 展望2026年,稳楼市的主基调延续,...
原创 韩... 韩国这回跟日本杠上了,不仅起诉了“靖国神社”,还要求日本政府赔钱,高市早苗的麻烦事儿,可真是一桩接着...
甘肃省镇原县人民法院:“小额诉... “法院拿出的一揽子方案,既考虑了我们企业的实际情况,也兼顾双方的合法权益,我们还愿继续合作!” 日前...
甘肃省民乐县人民法院诉讼服务中... “不到十分钟就完成了从咨询到立案的全部流程!”近日,一企业办事人员在法院干警的指导下,通过涉企绿色通...