`
ychw365
  • 浏览: 53155 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

指针高级--<高质量编程>

阅读更多

 //  execise2.cpp : Defines the entry point for the console application.
 //
 
#include  " stdafx.h "
#include  < iostream >

#include <stdio.h>
#include <tchar.h>  


 using   namespace  std;
 // -----------------------------------------------
 void  GetMemory1( char   * p)
  {
    p  =  ( char   * )malloc( 100 );
}
 void  Test1( void )
  {
     char   * str  =  NULL;
    GetMemory1( str );
    strcpy(str,  " hello world " );
    printf(str);
}
 // -----------------------------------------------
 char   * GetMemory2( void )
  {  
     char  p[]  =   " hello world " ;
     return  p;
}
 void  Test2( void )
  {
     char   * str  =  NULL;
    str  =  GetMemory2(); 
    printf(str);
}
 // -----------------------------------------------
 void  GetMemory3( char   ** p,  int  num)
  {
     * p  =  ( char   * )malloc(num);
}
 void  Test3( void )
  {
     char   * str  =  NULL;
    GetMemory3( & str,  100 );
    strcpy(str,  " hello " ); 
    printf(str);   
}
 // -----------------------------------------------
 void  Test4( void )
  {
     char   * str  =  ( char   * ) malloc( 100 );
    strcpy(str,  " hello " );
    free(str);     
     if (str  !=  NULL)
      {
        strcpy(str,  " world " );
        printf(str);
    }
}
 // -----------------------------------------------
 main()
  {
     // -----------------------------------------------
     // 请问运行Test1函数会有什么样的结果?
     //
     // 答:程序崩溃。
     //
     // 因为GetMemory并不能传递动态内存,
     //
     // Test函数中的 str一直都是 NULL。
     //
     // strcpy(str, "hello world");将使程序崩溃。
     Test1();
     // -----------------------------------------------
     //     请问运行Test2函数会有什么样的结果?
     //
     // 答:可能是乱码。
     //
     // 因为GetMemory返回的是指向“栈内存”的指针,
     // 该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。
     Test2();
     // -----------------------------------------------
     //     请问运行Test3函数会有什么样的结果?
     //
     // 答:
     //
     // (1)能够输出hello
     //
     // (2)内存泄漏
     Test3();
     // -----------------------------------------------
     //     请问运行Test函数会有什么样的结果?
     //
     // 答:篡改动态内存区的内容,后果难以预料,非常危险。
     //
     // 因为free(str);之后,str成为野指针,
     //
     // if(str != NULL)语句不起作用。
     Test4();
     // -----------------------------------------------
 }

分享到:
评论

相关推荐

    高质量指南

    56&lt;br&gt;&lt;br&gt;第8章 C++函数的高级特性... 57&lt;br&gt;&lt;br&gt;8.1 函数重载的概念... 57&lt;br&gt;&lt;br&gt;8.2 成员函数的重载、覆盖与隐藏... 60&lt;br&gt;&lt;br&gt;8.3 参数的缺省值... 63&lt;br&gt;&lt;br&gt;8.4 运算符重载... 64&lt;br&gt;&lt;br&gt;8.5 函数内联... 65...

    高质量C/C++编程指南(PDF)

    高质量C++/C 编程指南,v 1.0 2001 Page 4 of 101 6.1 参数的规则. 6.2 返回值的规则. 6.3 函数内部实现的规则. 6.4 其它建议. 6.5 使用断言. 6.6 引用与指针的比较. 第7 章 内存管理 7.1 内存分配方式 7.2 常见...

    高质量C++-C编程指南

    高质量C++-C编程指南 目 录 前 言... 6 第1章 文件结构... 11 1.1 版权和版本的声明... 11 1.2 头文件的结构... 12 1.3 定义文件的结构... 13 1.4 头文件的作用... 13 1.5 目录结构... 14 第2章 程序的版式... 15 ...

    高质量C++编程指南.PDF

    高质量C/C++编程指南.PDF 作者:林锐 目录: 前 言 第1章 文件结构 1.1 版权和版本的声明 1.2 头文件的结构 1.3 定义文件的结构 1.4 头文件的作用 1.5 目录结构 第2章 程序的版式 2.1 空行 2.2 代码行 2.3 代码行内...

    高质量C++编程指南(林锐) DOC和PDF合集

    高质量C++编程指南(林锐)DOC版和pdf的合集 目 录 前 言 6 第1章 文件结构 11 1.1 版权和版本的声明 11 1.2 头文件的结构 12 1.3 定义文件的结构 13 1.4 头文件的作用 13 1.5 目录结构 14 第2章 程序的版式 15 2.1...

    高质量C++编程指南.zip

    软件质量是被大多数程序员挂在嘴上而不是放在心上的东西! 除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?” 别难过,作者只不过比你早几...

    C++书籍\高质量C++&C编程指南

    学完编程基本语法之后,该怎样学习,提高编程能力,相信你看了这本书会找到答案

    高级C语言 C 语言编程要点

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    高质量C++编程指南

    《高质量C++编程指南》 软件质量是被大多数程序员挂在嘴上而不是放在心上的东西! 除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?” 别...

    高质量编程C++、C

    很深刻的关于编程上的细节讲解,我没有版权,就是为了兑换积分,发上来! 目 录 前 言 第1章 文件结构 1.1 版权和版本的声明 1.2 头文件的结构 1.3 定义文件的结构 1.4 头文件的作用 1.5 目录结构 第2章 ...

    高质量C C编程指南

    第8章 C++函数的高级特性 8.1 函数重载的概念 8.2 成员函数的重载、覆盖与隐藏 8.3 参数的缺省值 8.4 运算符重载 8.5 函数内联 8.6 一些心得体会 第9章 类的构造函数、析构函数与赋值函数 9.1 构造函数与析构函数的...

    高质量C编程指南 林锐 博士

    高质量C编程指南 一本不错的书 林锐 博士 目 录 前 言 6 第1章 文件结构 11 1.1 版权和版本的声明 11 1.2 头文件的结构 12 1.3 定义文件的结构 13 1.4 头文件的作用 13 1.5 目录结构 14 第2章 程序的版式 15 2.1 ...

    高质量C++C编程指南

    高质量C++C编程指南 第1章 文件结构 * 1.1 版权和版本的声明 * 1.2 头文件的结构 * 1.3 定义文件的结构 * 1.4 头文件的作用 * 1.5 目录结构 * 第2章 程序的版式 * 2.1 空行 * 2.2 代码行 * 2.3 代码行内的空格 * 2.4...

    高级c语言程序编程思想

    高质量C++/C编程指南 目 录 前 言 6 第1章 文件结构 11 1.1 版权和版本的声明 11 1.2 头文件的结构 12 1.3 定义文件的结构 13 1.4 头文件的作用 13 1.5 目录结构 14 第2章 程序的版式 15 2.1 空行 15 2.2 代码行 ...

    C语言高级教程-上海贝尔.pdf

    大佬写的C编程指南与规范,要学好C必看 本书第一章至第六章主要论述 C++/C 编程风格。难度不高,但是细节比较多。别小 看了,提高质量就是要从这些点点滴滴做起。世上不存在最好的编程风格,一切因需求 而定。团队...

    高质量C++-C编程指南.htm

    第8章 C++函数的高级特性... 57 8.1 函数重载的概念... 57 8.2 成员函数的重载、覆盖与隐藏... 60 8.3 参数的缺省值... 63 8.4 运算符重载... 64 8.5 函数内联... 65 8.6 一些心得体会... 68 第9章 类的构造...

Global site tag (gtag.js) - Google Analytics