• 黑马程序员——c语言学习心得——函数传递二维数组


    黑马程序员——c语言学习心得——函数传递二维数组

     

    一、定义指针的时候一定要初始化。
       变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯。尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问。那么如何初始化指针变量呢,一般有以下几种方法:
       1、初始化空指针
       int* pInteger=NULL;
       2、用已有的变量初始化
       int length=5;
       int* pInteger=&length;
       3、用内存分配函数给指针分配空间
       int* pInteger=(int*)malloc(10*sizeof(int));//为指针分配大小为10个整数的内存空间。
       二、正确的申请和释放内存
       指针使用之后,如果不释放指针所使用的内存,就会造成内存的泄露,这样就会有大量内存由于没能释放,别的程序不可以使用这部分内存,如果一个程序不停申请内存而不去释放内存,很快就会造成系统的崩溃。那么如何正确的申请和释放内存呢。
       1、指针初始化,上面已讲
       2、正确的申请内存
       如何申请内存才算是正确的申请内存呢?首先要判断指针是否为空,如果不为空,则释放该指针所指向的内存块,如果不释放这块内存,而直接就申请内存,就会造成内存的泄露。申请内存后,一定要判断是否申请成功。
    如:int* pInteger=NULL;//指针定义处
        ...
        if(pInteger != NULL)
        {
            free(pInteger);
            pInteger=NULL;//指针释放之后并不为空,要设置其为空
        }
        pInteger=(int*)malloc(10*sizeof(int));
        if(pInteger != NULL)
        {
            printf("内存申请没有成功\n!");
            exit(0);
        }
        ...
      3、内存释放
      程序使用完了指针,一定要记得释放指针指向的内存。释放后一定要记得设置指针为空指针。因为free函数在释放指针后,只是单纯的释放了该指针指向的内存空间,而没有将指针赋为空值。所以一定要记得在释放指针后将指针赋为空值。
    如:
      int* pInteger=NULL;//指针定义处
      ...
      free(pInteger);//释放指针
      pInteger=NULL; //指针赋为空值
      三、使用指针时一定要判断指针是否为空
      在使用指针时一定要判断指针是否为空,如果为空,则做相应的操作。如果不做判断,则可能错误的使用空指针。
      如:char* dest=NULL;
          ...
          strcpy(dest,"string");//如果dest为空则出错
      
      正确的使用方法为:
         if(dest == NULL)
         {
             dest=(char*)malloc(7*sizeof(char));//因为字符串以“\0”结束,
                                                //所以要申请7个字符的内存
             //判断内存申请是否成功
             ...
          }
          strcpy(dest,"string");

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    生成组合算法
    今天复习C++的const,又学到了很多内容,总结一下[原创]
    文字和图片在一行,文字靠左,图片靠右(div)[转]
    联合查询
    排序查询
    分页查询 ★
    分组查询
    基础查询
    条件查询
    连接查询 (二)sql99语法
  • 原文地址:https://www.cnblogs.com/zijie/p/4925949.html
Copyright © 2020-2023  润新知