C语言知识小结(四)

                          指针

什么是指针?    
        
      指针是一个保存地址的变量

指针的定义:

          1、定义一个指针变量p,类型是int*。
          2、p指向一个int型的数据
           (涉及的指针符号:* &)
              int  *p;

指针的绑定:

           p = &a;

指针的解引用:


      *p得到了变量(a)。

       *p = 23;

       printf("a = %d.\n", a);
        


定义指针的同时并且初始化:


        int *p1 = &a;


        等同于:


       int *p, a;

       p = &a
       printf("p1 = %p.\n", p1);

       NULL专用于指针的初始化(写0)
       int *p = NULL


野指针的危害?


       1、直接指向内核区
       2、指向可用也没有别的数据的区域
       3、指向可用但有别的数据的区域。


二维数组指针:


        //二维数组, 变量名:首元素首地址{arr[0], arr[1]}
        //arr &arr[0] &arr[0][0]
        //arr代表数组首元素首地址(&arr[0])
        //&arr[0]代表第一维数组的首元素首地址
        //&arr[0][0]代表数组的第二维数组是首元素首地址


 


                 const



const修饰的变量不能改变,只能初始化一次


类型一:
     int const *p1;        
         p1 = &a;
    *p1 = 11; // 错误  error: assignment of read-only location ‘*p1’


类型二:
    2,
    const int  *p2;  // p2所指向的数据(int)不能改变,等同于p1


类型三:
    3,
    int * const p3;  // 野指针,const修饰p3,p3不可改.但是p3所指向的内容可改变



类型四:
    4,
    const int *const p4;  // 定义时同时初始化,两者都不能变




                  typedef


typedef是重命名的关键字,他不是发明新类型,而是给类型起了一个新外号

        //这就表示一个类型,p_func是一个类型的名字, 函数指针
        typedef void (*p_func) (void);
        //函数指针数组:数组里面的元素都是指针(函数指针)
        typedef void (*p_arr[10])(void);






                malloc动态数组



堆空间的申请


        int *p = NULL;
        p = (int *)malloc(num * sizeof(int));
    

判断申请空间是否成功


        if (NULL == p)

        {
                printf("malloc error.\n");

                return -1;
        }       


清空这段内存


        memset(p, 0, num*sizeof(int));



释放堆内存:

        //1、整个程序结束,会自动释放堆内存
        //2、申请一次,释放一次,不能多次释放
                free(p);
                p = NULL;
        //3、释放的堆内存必须是这块内存的首地址


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值