A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 占晓 中级黑马   /  2016-9-15 00:57  /  2020 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.变量的命名规则以及规范(4规则\2规范)

    4规则:
        1>标识符只能由数字\字母\下划线\$组成而且不能以数字开头
        2>变量严格区分大小写
        3>不能和关键字重名
        4>同一作用域内不能定义相同名字的变量
        "5>变量一定要在声明后使用"

    2规范:
        1>标识符的定义必须有意义(例:年龄-->age)
        2>驼峰式命名法:如果一个变量名由多个单词组成,那么除了第一个单词,其他单词的首字母大写.

    补充:变量命名一定要符合规则和规范\  写代码一定要加注释(注释不参与编译) 方便他人阅读 \  代码要整齐

    拓展:OC中成员变量名必须要以下划线开头




#pragma mark - 2.数据类型转换

2.数据类型转换

        1\数据类型转换分为二种:隐式转换(自动转换)\显示转换(强制转换)

        2\隐式转换(自动转换):当赋值符号"="左右两边的数据类型不一样的时候 系统会进行自动的转换(会把右边的值的类型转换成左边的类型)
                举例:int num = 3.9; double类型3.9赋值给num的时候会直接忽略小数点,转成整型,但精度降低;
                隐式转换中自己要明确,右边的数值到底能不能转成左边的类型.
                char类型的隐士转换: 字符在内存中是以ASCII码存在的,本质上是个数字,是一个整数

        3\显示转换(强制转换):在变量前加上小括号(小括号中填上要强转的类型)
                举例:应用比较多的是结构体先定义再一起初始化的时候,可以在大括号前加上小括号填上要强转的结构体类型.

        拓展:
        OC:oc中当一个父类指针指向子类对象的时候,又想通过父类指针去访问子类对象的私有方法和属性时,可以将这个父类指针强转为子类类型




#pragma mark - 3.printf\scanf, 自增自减,逻辑运算符

3.printf\scanf, 自增自减,逻辑运算符

        1\printf\scanf
            1>printf:c语言中格式化输出字符串的函数,可以输出自定义字符串\常量\变量(不自动换行)

            补充:puts():输出字符串---原理:从给定的地址开始到'\0'结束--- 优点:自动换行 ---缺点:不能格式化输出.
                fputs():将数据输出到指定的流中(包括标准输出流和文件流)

            拓展:OC中用"NSLog(@"");"来格式化输出自定义字符串\变量\常量\对象,优点:自动换行

            2>scanf:scanf函数是从控制台接收用户输入的数据的函数,可以接收字符串\和基本数据类型

            注意:如果有多个占位符,占位符间隔可以自定义,但控制台输入的时候要对应.
                也可以不写,不写的情况下如果是基本数据类型(除了字符型),那么输入每个数据的间隔可以是空格\回车\table键
                如果是接收的字符类型,要在接收之前清空缓存区,因为回车也算是个字符,scanf是从缓冲区拿数据的."rewind(stdin);"
            缺点:接收字符串的时候不能接收空格\接收字符串的长度超过数组长度会报错

            补充:gets()控制台获取输入的字符串 ----优点:输入的时候中间可以有空格----- 缺点:不安全(输入长度大于数组长度崩溃)
                fgets()从流中接收数据(标准输入流和文件流):-----优点:可以接收空格,----接收长度大于数组长度不会报错,只会接收数组长度减1的长度并自动加上'\0',---接收长度小于数组长度减1的时候,会自动在末尾加上'\n', 安全 ,可以从文件流中读取数据

        2\自增自减
            1>不管++在前还是++在后,操作运算符的这个变量最后都会改变
            2>++在前是先将这个变量加1再使用这个值,++在后是先使用这个变量的值然后再+1;
            --同理
            自增自减运算符在循环中用的较多

        3\逻辑运算符(三种)
            1>逻辑与(&&):全真为真,当运算符两边都为真时,表达式的值才为真,有短路现象,当运算符左边为假时,运算符右边的表达式不会执行,整个表达式为假
            2>逻辑或(||):有真则真,当运算符两边有一个是真的时候,表达式的值就为真, 有短路现象,当运算符左边为真时,运算符右边的表达式不会执行,整个表达式为真.
            3>逻辑非(!)(取反):单目运算符,假变真,真变假.

        补充(按位运算):
            按位与(&):二进制对应位都为1时,对应位结果才为1(应用:数值&1,可以取出当前位)
            按位或(|):二进制对应位有一个为1,则对应位结果就为1
            按位取反(~):0变1,1变0
            按位异或(^):相同为0,不同为1.
            按位左移(<<):高位舍弃,低位补0  移动n位相当于乘上2的n次方
            按位右移(>>):低位溢出舍弃,高位补符号位,移动n位相当于除上2的n次方
            将其他进制数转换成二进制数输出




#pragma mark - 4.if 语句,三元表达式,switch-case, break 与 continue 区别

4.if 语句,三元表达式,switch-case, break 与 continue 区别

        1\if语句 :选择结构 :先判断第一个条件表达式,不成立再判断第二个...前面的都不成立,会执行else代码块
        补充:if用的很多

        2\三元表达式: 相当于最简单的if else 结构  格式:条件表达式?表达式1:表达式2;  条件表达式成立执行表达式1,不成立执行表达式2.

        3\switch-case:选择结构:
            1>switch后面小括号中只能是结果为整数的表达式\变量\或者'字符',,
            2>case 不能是变量,只能是结果为整数的表达式\或者'字符'
            3>case后面的值不能相同
            case有穿透现象,如果case里没有break,那么如果一个case中的值相等,会执行之后的所有case中的语句,不会判断.
        补充:当判断的是整数或字符的时候用switch较合适(判断枚举的时候用的较多)

        4\ break 与 continue 区别
            break: 只能用在循环语句和switch中, 在循环中break是立即终止该循环,在switch中是终止switch语句.
            continue: 只能用在循环语句中,在循环语句中,continue只是中断本次循环继续下次循环."用于加速循环"




#pragma mark - 5.while与do-while区别,while 与 for循环区别

5.while与do-while区别, while 与 for循环区别

            1\while与do-while区别:都是循环结构
                while:当型循环:先判断再执行. 在第一次判断条件不成立的情况,不会执行.
                do-while:直到型循环:先执行后判断 .在第一次判断条件不成立的情况下也会执行一次.
                应用:在循环体无论如何都要执行一次的时候,使用do-while,,在实际开发中do-while使用较少.

            2\while 与 for循环区别
                for循环比while循环更简洁,while可以实现的循环,一定可以用for循环来实现,反之亦然.
                for循环做嵌套比while循环可读性更高.

            补充:死循环用在游戏,系统比较多.
            拓展:OC加强for循环




#pragma mark - 6.四种进制,sizeof运算符,位运算,int类型的修饰符,有符号和无符号

6.四种进制,sizeof运算符,位运算,int类型的修饰符,有符号和无符号

            1\四种进制:二进制(0b开头>>0-1)-----八进制(0开头>>0-7)----------十进制(0-9)-------十六进制(0x开头>>0-f)

            2\sizeof运算符:计算当前系统,编译器下, 常量,变量,数据类型在内存中所占的字节数
                注意:
                sizeof(字符型变量):1个字节
                sizeof(字符型常量):4个字节

            3\位运算
                按位与(&):二进制对应位都为1时,对应位结果才为1(应用:数值与上1,可以取出当前位)
                按位或(|):二进制对应位有一个为1,则对应位结果就为1
                按位取反(~):0变1,1变0
                按位异或(^):相同为0,不同为1.
                按位左移(<<):高位舍弃,低位补0  移动n位相当于乘上2的n次方
                按位右移(>>):低位溢出舍弃,高位补符号位,移动n位相当于除上2的n次方
                将其他进制数转换成二进制数输出

            4\int类型的修饰符:
                三个,short修饰, long修饰, long long修饰   :指定int类型的变量在内存中占用的字节数.
                有符号无符号修饰符:signed unsigned(无符号二进制中最高位不表示正负,而是直接参与数据的表示)




#pragma mark - 7.格式控制符,垃圾值,选择,冒泡,常用函数

7.格式控制符,垃圾值,选择,冒泡,常用函数

            1\格式控制符
                int类型格式控制符:以十进制形式输出:%d, 八进制输出:%o, 十六进制输出:%x.
                int被修饰符修饰后的格式控制符: short  %hd
                                            long  %ld
                                            long long %lld

                                            unsigned int %u
                                            unsigned short %hu
                                            unsigned long %lu   *********
                                            unsigned long long %llu

                float: %f 如果想保留几位小数 %.mf m表示保留的小数位数
                double %lf 如果想保留几位小数 %.mlf m表示保留的小数位数
                char: %c 注意:用%d输出的是ASCII码值
                打印地址: %p
                字符串:%s
                拓展:OC中打印对象%@调用description方法,OC字符串是个对象,在打印字符串某个字符时,是打印unichar(unsigned short) 用%C打印

            2\垃圾值
                定义局部变量未初始化,存储的是垃圾值    (全局变量默认初始化为0)
                声明一个数组未初始化,则每个元素都是一个垃圾值
                声明指针未初始化则指针是个野指针,指向未知地址,定义指针的时候当不知道初始化值的时候,赋值NULL

            拓展:OC创建对象的时候,系统自动初始化成员变量(属性)

            3\选择排序(应用:)
                for(int i= 0; i<len-1; i++)
                {
                    for(int j = i+1; j<len; j++)
                    {
                        if(arr[i] < arr[j])
                        {
                            交换
                        }
                    }
               
                }

            4\冒泡排序(应用:)
                for(int i = 0; i<len-1; i++)
                {
                    for(int j = 0; j<len-1-i; j++)
                    {
                        if(arr[j] > arr[j+1])
                        {
                            交换
                        }
                    }
                }

            5\常用函数
                    1>stdio.h中:
                        格式化输出:"printf();"
                        格式化输入:"scanf();"
                        字符串输出:"puts();"
                        流输出   :"fputs();"
                        字符串输入:"gets();"
                        流输入   :"fgets();"
                        打开文件:"fopen("文件路径", 打开模式);"
                        关闭文件:"fclose(文件指针);"
                        写入文件:"fwrite();"
                        读取文件:"fread();"

                    2>stdlib.h中
                        随机数:"arc4random_uniform();"
                        malloc(字节数):向堆区申请空间
                        calloc(块数,每一个块字节数):向堆区申请指定字节数的空间,优点会将申请的空间数据清零.
                        realloc(原来字节空间的指针,扩容后的容量):空间不够用,可以进行扩容.
                        free(指针):释放申请的空间
                    3>string.h中
                        计算字符串长度:"strlen();"
                        比较字符串:"strcmp();"
                        拷贝字符串:"strcpy();"
                        链接字符串:"strcat();"




#pragma mark - 8.指针的存储,指针是什么?指针类型,指针类型,指针运算,const关键字

4 个回复

倒序浏览
看了一下,总结的还算到位!
回复 使用道具 举报
真的吗丶
回复 使用道具 举报
不错,好好学习
回复 使用道具 举报
总结的可以,长知识了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马