C语言-note001

一、数据类型

1.基本内置类型

1-1 整型

        short

        int

        long

                sizeof(long)

                        32位:4字节

                        64位:8字节

        long long

1-2 浮点型

        float

        double

1-3 字符型

        char

2. 类型基本归类

2-1 整型家族

        char

                本质ASCII值是整型

        short

        int

        long

        long long

需要正负号的用signed

不需要正负号的用unsigned

2-2 浮点型家族(表示小数)

        float

        double

2-3 构造类型(自定义类型)

        数组

        结构体struct

        枚举enum

        联合union

2-4 指针类型

2-5 空类型

        void test(void

                第一个void:函数没有返回值

                括号里的void:函数不需要传任何参数

3. 整型在内存中的存储

        以二进制的补码形式进行存储

3-1 整数的二进制的3种表现形式

        原码

        反码

        补码

3-2 正整数、负整数的原码、反码、补码

3-2-1 正整数

        原码、反码、补码相同

3-2-2 负整数

        原码

                通过二进制写出(最高位0正1负)

        反码

                符号位不变

                其他位取反

        补码

                反码+1

3-2-3 在内存中为什么使用二进制的补码形式进行存储

        将符号位和数值域统一处理

        加法和减法统一处理(CPU只有加法器)

        补码和原码相互转换,运算过程是相同的,不需要额外的硬件电路

3-3 大小端介绍

        大端字节序存储:11 22 33 44

                高位序字节内容放在低地址处

                低位序字节内容放在低地址处

        小端字节序存储:44 33 22 11

                高位序字节内容放在高地址处

                低位序字节内容放在低地址处

4. 浮点型在内存中的存储

4-1 规则

        (-1)^S * M * 2^E

                        (-1)^S :符号位

                            M:有效数字,大于等于1,小于2

                            2^E:指数位

-5.0f-->101(二进制)-->1.01 * 2^2【^2:向左移两位】(科学计数法)

1.01 * 2^2-->(-1)^0 * 1.01 * 2^2

        S = 0

        M = 1.01

        E = 2

4-2 指数E从内存中取出(3种情况)

        E不为:全0/全1

        E全为:0

        E全为:1

5. 指针数组

        数组

        存放指针的数组

int* arr[10];        //存放整型指针的数组

6. 数组指针

        指针

        指向数组的指针

int* p1[10];        //p1是指针数组

int (*p2)[10];        //p2是数组指针         //p2可以指向一个数组

        整型指针用来存放整型的地址

        字符指针用来存放字符的地址

        数组指针用来存放数组的地址

7. 数组名

数组名通常表示数组元素地址,但是有2个例外

        7-1 sizeof(数组名):表示整个数组,计算数组的大小

        7-2 &数组名:取出整个数组的地址,这里的数组名还是表示整个数组

arr作为数组名

        表示数组首元素地址

        表示二维数组的首元素地址是第一行地址

int arr1[2];                //数组

int *parr1[2];             //指针数组

int (*parr2)[2];           //数组指针

int (*parr3[2])[3];        //存放数组指针的数组

                                     2个元素,每个元素是一个指针

                                     每个指针指向一个数组

                                     每个数组存放3个元素  

8.数组参数、指针参数

8-1 一维数组传参 

        void test(int arr[10])

        void test(int arr[])        //可以写成数组

        void test(int *arr)        //可以写成指针

        void test(int *arr[10])

        void test(int **arr)

8-2 二维数组传参

        void test(int arr[3][2])

        void test(int arr[][])        //这种写法不行!!!        //形参的二维数组,行可以省略,列不能省略

        void test(int arr[ ][4])

        void test(int (*arr)[5])

8-3 一级指针传参

        void print(int* p)

                print(&a)

                print(ptr)

                print(arr)

8-4 二级指针传参

        void test(int** ptr)

                test(pp)

                test(&p)

8-5 函数指针

        类比数组指针

                指向数组的指针

        函数指针

                指向函数的指针

        &函数名、函数名

                对于函数来说,&函数名、函数名都是函数的地址

                printf("%p\n",&函数名):

                 printf("%p\n",函数名):

 

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值