美文网首页
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