美文网首页
12.15C基础数组和指针的学习

12.15C基础数组和指针的学习

作者: 清风纳兰 | 来源:发表于2016-12-15 19:24 被阅读0次

笔记:

一 数组

1.二维数组
    行数可以省略,列不可省略!!!
2.指针
    (1)指针类型是一种特殊类型
            DataType *name;
            DataType* name;
            DataType * name;
            DataType:数据类型
           
            name:变量名
            指针和普通变量的区别:
                    指针   :存地址
                    普通变量:   存值                              

            指针只能保存与其相同类型的地址                                                 
            int *p:只能保存int型地址
            char *pc:只能保存char型地址
            double *pd:只能保存double型地址                
            
    (2)初始化
            int *p = NULL;  //OK
            
            int a = 3;
            int *pa = &a;   //OK
            
            int *pb;
            pb = &a;                //OK
            
            int *pc;
            *pc = &a;               //error
    (3)地址的访问
            *:间接访问运算符
            int a = 10;
            int *pb;
            pb = &a;                //OK
            
            变量名  变量地址          存储
            a     0x000012     10
            pb    0x000034     0x000012     
            
            *pb:取指针对应内存里面的值
    (4)可以把指针变量赋值给同类型指针
    (5)不同类型的指针的大小
            64位机:    8
            32位机:    4              
    (6)指针的类型和指针所指向的类型
            int *pa;
                    int* pa;
            double *pd;
            指针的类型:
                    去掉变量名之后的部分
            指针所指向的类型:
                    去掉指针变量名和其前面的*
            
    (7)指针与数组
            数组名是一个地址,
            数组元素的访问:
                    int arr[5] = {1,2,3,4,5};
                    int *pa = arr;
            形式:
                    arr[0];  arr[3];
                    *(arr);  *(arr+3);
                    *(pa) ;  *(pa+3); 
                    pa[0] ;  pa[3];                 
            
    (8)野指针
            没有初始化,或者其指向的内存被释放,而指针没有被置空;
    危害:
            造成系统资源的浪费,容易造成未知的致命错误.
    (9)指针地址的运算
            自增:指针向高地址方向移动
            自减:指针向低地址方向移动
                    移动的字节数是指针所指向的类型的大小

            指针相减,表示两指针之间的距离
            指针相加没有意义

            指针加减一个常量,表示地址往高字节或低字节方向移动
            常量值*sizeof(对应数据类型)个字节!

    (10)概念区分
            int buf[3];
                    //数组,大小为3,存放三个int型变量            
            int *pb;
                    //指针,其类型为int *型
            
            int *arr[3];
                    //指针数组
            
            int (*pa)[3]; 
                    //数组指针,又称行指针
                    int (*)[]  pa;

            int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
            <====>
            arr[3] = {a[3],a[3],a[3]};
            1  2  3
            4  5  6
            7  8  9

2.二级指针

    DataType **PointorName;
    
    int a = 10;
    int *q = &a;
    int **p = &q;
    
    *p = q;
    **p = *q = a;   



    //定义一个指针,或对地址进行操作时,一定要确定指针的指向

相关文章

网友评论

      本文标题:12.15C基础数组和指针的学习

      本文链接:https://www.haomeiwen.com/subject/rwugmttx.html