`
lingyibin
  • 浏览: 196370 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

高质量C++/C编程学习笔记(二)----- 基础

阅读更多

1、在函数体的“入口处” ,用断言对参数的有效性进行检查。断言 assert 是仅在 Debug 版本起作用的宏,它用于检查“不应该”发生的情况。

 

void  *memcpy(void *pvTo, const void *pvFrom, size_t size) 
{ 
 assert((pvTo != NULL) && (pvFrom != NULL));  //  使用断言 
 byte *pbTo = (byte *) pvTo;  //  防止改变 pvTo 的地址 
 byte *pbFrom = (byte *) pvFrom; //  防止改变 pvFrom 的地址 
 while(size -- > 0 ) 
  *pbTo ++ = *pbFrom ++ ; 
  return pvTo; 
} 

如果程序在 assert 处终止了,并不是说含有该 assert 的函数有错误,而是调用者出了差错,assert 可以帮助我们找到发生错误的原因。

 

 2、在函数体的“出口处” ,对 return 语句要注意以下几点:

(1)return 语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。例如

 

         char * Func(void) 
         { 
           char str[] = “hello world”;  // str  的内存位于栈上 
           … 

           return str;     // 将导致错误 
         } 

 2 )如果函数返回值是一个对象,要考虑return 语句的效率。例如

return String(s1 + s2) 

比 

 

       String temp(s1 + s2); 

       return temp;

还高效,因为前者是创建一个临时对象并返回它,而后者创建临时对象temp时,同时完成初始化;然后拷贝构造函数把 temp  拷贝到保存返回值的外部存储单元中;最后,temp  在函数结束时被销毁(调用析构函数)

 

 

 3、引用与指针

这是比较重要的一块。

引用的一些规则如下: (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化) 。 (2)不能有 NULL 引用,引用必须与合法的存储单元关联(指针则可以是 NULL) 。 (3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象) 。 以下示例程序中,k 被初始化为 i 的引用。语句 k = j 并不能将 k 修改成为 j 的引用, 只是把 k 的值改变成为 6。由于 k 是 i 的引用,所以 i 的值也变成了 6。 int i = 5; int j = 6; int &k = i; k = j; // k 和 i 的值都变成了 6; 上面的程序看起来象在玩文字游戏,没有体现出引用的价值。引用的主要功能是传递函数的参数和返回值。

 

4、值传递、指针传递和引用传递。

C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

 

// 值传递
void Func1(int x) 
{ 
 x = x + 10; 
} 
… 
int n = 0; 
 Func1(n); 
 cout << “n = ” << n << endl; // n = 0 

 // 指针传递

 void Func2(int *x) 
{ 
 (* x) = (* x) + 10; 
} 
… 
int n = 0; 
 Func2(&n); 
 cout << “n = ” << n << endl;  // n = 10 

 // 引用传递

 

 void Func3(int &x) 
{ 
 x = x + 10; 
} 
… 
int n = 0; 
 Func3(n); 
 cout << “n = ” << n << endl;  // n = 10 
 

 

0
0
分享到:
评论

相关推荐

    高质量c++编程指南学习笔记

    ### 高质量C++编程指南知识点总结 #### 1. 布尔变量的比较 在C++中,不应该直接将布尔变量与`TRUE`, `FALSE`或`1`, `0`进行比较。...以上总结了《高质量C++编程指南》中提到的关键知识点,希望对您的学习有所帮助。

    很好的C++学习资源

    C++是一种广泛使用的编程语言,尤其在系统软件、应用程序、游戏开发、设备驱动等领域...《C++ Primer》提供的学习笔记是初学者和进阶者都非常宝贵的资源,结合实际的编译器操作和错误调试,能够帮助你逐步精通C++编程。

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

    以上知识点只是冰山一角,深入学习"高质量C/C++编程指南",结合作者的笔记和总结,将有助于你在C/C++编程领域达到更高的水平。记住,实践是最好的老师,不断编码、反思和改进是成为优秀程序员的必经之路。

    高质量程序设计指南:C、C++语言(第3版)

    《高质量程序设计指南:C、C++语言(第3版)》不仅仅是一本技术书籍,更像是一位经验丰富的导师,引领着读者进入C/C++编程的世界。通过系统学习本书中的理论知识与实战技巧,读者能够显著提升个人编程技能,在职业...

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

    《高质量C++/C编程指南》是一本专门针对C++和C编程的指南,它涵盖了编程的最佳实践、陷阱和技巧,以帮助程序员编写出高效、可维护的代码。这本书可能包括了模板元编程、异常处理、STL(标准模板库)的使用、内存管理...

    高质量C++编程学习笔记.doc

    高质量C++编程学习笔记.doc

    高质量程序设计指南:C++C语言(第三版)笔记

    《高质量程序设计指南:C++/C 语言(第三版)》是一本深入探讨软件开发质量和C++/C 编程规范的书籍...通过深入阅读和实践,读者将能够掌握编写高质量C++/C程序的技巧,并理解如何在实际开发中实施有效的软件工程方法。

    Visual C++/MFC学习笔记.doc

    《Visual C++/MFC学习笔记》是一份深入探讨C++和Microsoft Foundation Class (MFC)库的文档,旨在帮助读者掌握使用Visual C++开发Windows应用程序的技能。这份笔记主要分为六个章节,覆盖了从入门到高级的多个主题。...

    (强烈推荐大家看一看)高质量C++编程指南(有笔记)_a

    《高质量C++编程指南》是一本深受欢迎的C++学习资料,特别适合初学者作为入门教程。这本书结合了丰富的编程经验和实例,旨在帮助读者掌握C++编程的核心概念、语法和最佳实践。通过阅读这本书和相应的笔记,学习者...

    QT高级编程视频教程-最强初级到高级编程开发丁林松--QT高级编程视频教程-最强初级到高级编程开发.zip

    通过学习,你可以提升自己的QT编程能力,开发出高质量、跨平台的应用程序。同时,提供的"QT高级编程视频教程-最强初级到高级编程开发丁林松--QT高级编程视频教程-最强初级到高级编程开发.txt"文本文件,很可能是课程...

    C++提高编程 学习笔记

    ### C++ 提高编程学习笔记:泛型编程与 STL 技术详解 #### 一、泛型编程概述 泛型编程是一种编程范式,通过在程序设计中使用参数化的类型来编写代码,使得同一段代码可以处理多种不同的数据类型。这种编程方式极大...

    (强烈推荐大家看一看)高质量C++编程指南(有笔记)下

    《高质量C++编程指南》是一本深受欢迎的C++学习资料,其中包含了丰富的编程实践经验和最佳实践。这本书的笔记部分尤为珍贵,它不仅涵盖了基础的语法和概念,还深入探讨了C++的高级特性和设计模式,对于提升编程技能...

    c/c++编程思想

    《C/C++编程思想》是一本面向初学者的宝贵资源,涵盖了C++语言的基础到高级概念,旨在帮助读者深入理解编程原理并掌握C++的核心特性。这个压缩包包含的PDF文件很可能包含了各种教程、笔记或者讲解,对于那些对C++...

    (强烈推荐大家看一看)高质量C++编程指南(有笔记)1

    这份"(强烈推荐大家看一看)高质量C++编程指南(有笔记)1"提供了丰富的资源,旨在帮助学习者提升C++编程技能,特别是在理解和应用方面。下面将详细讨论这份指南中可能涵盖的关键知识点。 1. **基础语法与数据类型**...

    c++学习总结,在学习c++时做的一些笔记

    在深入探讨C++编程语言的学习经验之前,首先要理解C++是一种多范式、面向对象的编程语言,由Bjarne Stroustrup于1983年在C语言的基础上发展而来。它提供了丰富的特性,包括类、模板、异常处理、命名空间、函数重载等...

    新手C++学习笔记(仅供菜鸟成长参考).rar

    《新手C++学习笔记》是一份专为编程初学者打造的资源,旨在帮助那些刚刚踏入C++编程领域的“菜鸟”快速成长。这份笔记包含了前辈们的实践经验总结,具有很高的学习价值。文档以.doc格式存储,方便读者使用常见的文字...

    高质量C++编程指南

    从给定的文件信息来看,标题与内容存在明显的不匹配,标题提到的是“高质量C++编程指南”,然而内容却是关于法语学习的笔记。这里,我们将重点放在标题和描述所暗示的知识点上,即C++编程的相关知识。 ### 高质量...

    《C++编程思想》阅读笔记

    根据给定的文件信息,以下是对《C++编程思想》阅读笔记中提到的关键知识...以上就是从《C++编程思想》阅读笔记中提炼出的关键知识点,它们涵盖了从基础语法到高级编程概念的广泛内容,对于学习和理解C++语言至关重要。

Global site tag (gtag.js) - Google Analytics