`

改善c++程序建议——其他

c++ 
阅读更多
1、c++编写死循环一般使用:

while(1)
{
}

2、关键字static有三个明显的作用

1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

3、关键字const有什么含意?

const可以理解为"只读";

4、C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?
答:栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理
堆: 程序运行时动态申请,new 和 malloc申请的内存就在堆上

5、C语言中的整数自动转换原则

void foo(void)
{
    unsigned int a = 6;
    int b = -20;
    (a+b > 6) ? puts("> 6") : puts("<= 6");
}
这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 ">6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

6、宏函数的必要性与缺点


为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率。

  但是宏也有很多的不尽人意的地方。

  1、.宏不能访问对象的私有成员。

  2、.宏的定义很容易产生二意性。


7、内联函数相对于宏的优势


内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。

  我们可以用Inline来定义内联函数,不过,任何在类的说明部分定义的函数都会被自动的认为是内联函数。
下面我们来介绍一下内联函数的用法。

  内联函数必须是和函数体申明在一起,才有效。像这样的申明Inline Tablefunction(int I)是没有效果的,编译器只是把函数作为普通的函数申明,我们必须定义函数体。

Inline tablefunction(int I) {return I*I}; 

我们也可以将定义在类的外部的函数定义为内联函数,比如:
Class TableClass{
 Private:
  Int I,j;
 Public:
  Int add() { return I+j;};
  Inline int dec() { return I-j;}
  Int GetNum();
}
inline int tableclass::GetNum(){
return I;
}

当然,内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。



8、枚举型常量使程序的可读性增强


#include <iostream>

using namespace std;

int main ( )
{

enum day{
Sunday, Monday, Tuesday, Wednesday, Thurday,
Friday, Saturday
};

day today;

today = Monday;
if( today == Sunday || today == Saturday)
{
cout << "周末休息\n";

}else {

cout << "工作日\n";
return 0;
}
}


分享到:
评论

相关推荐

    高质量C++编程指南——教你如何提高C++编程质量

    ### 高质量C++编程指南知识点详述 #### 一、引言 - **软件质量的重要性**:在软件开发过程中,软件质量往往被许多程序员口头提及但并未真正付诸实践。高质量的C++编程不仅能够提升软件的稳定性和可维护性,还能减少...

    Visual C++面向对象程序设计-课件.rar

    11. **C++11及其以后的新特性**:C++11引入了许多新特性,如auto关键字、右值引用、lambda表达式、智能指针等,这些都极大地改善了C++的编程体验和效率。 结合标签,我们还可以看到与C++相关的其他语言,如Java、C...

    C++问答题整理——together1

    C++程序可以调用C的函数,但需要注意C++的name mangling(名称修饰)问题,需要使用extern "C"来保持与C的兼容性。此外,C++的内存管理和类型系统与C有所不同,比如C++提供了new和delete操作符,以及构造函数和析构...

    Visual C++ 数字图像处理——图像增强

    总结来说,"Visual C++ 数字图像处理——图像增强"是一个关于利用C++编程和拉普拉斯算子来提升图像清晰度,突出边缘的项目。这个过程中涉及到图像处理的基本概念、拉普拉斯算子的理论以及实际编程技巧,对于学习和...

    编写高质量代码:改善C 程序的150个建议

    ### 编写高质量代码:改善C++程序的150个建议 #### 一、概述 本书《编写高质量代码:改善C++程序的150个建议》旨在帮助程序员掌握编写高质量C++代码的关键技巧。书中通过详尽的示例和深入浅出的解释,覆盖了从基本...

    (Opencv C++)数字图像处理——空域增强

    在`ConsoleApplication2`这个项目中,我们可以预期看到一个简单的C++程序,它可能包含了上述的图像处理操作。通过读取输入图像,执行灰度变换、平滑和锐化,然后保存处理后的图像。开发者可能还添加了对处理效果的...

    Visual C++数字图像识别技术典型案例——求是科技

    《Visual C++数字图像识别技术典型案例——求是科技》是一份深入探讨图像处理和模式识别技术的教程,特别强调在VC++ 6.0开发环境中的应用。这份资源旨在为学习者提供一个实用的平台,通过实例代码来理解和掌握这些...

    数字图像处理与机器视觉——Visual C++与Matlab实现配套书籍源代码

    《数字图像处理与机器视觉——Visual C++与Matlab实现配套书籍源代码》是一本深入探讨数字图像处理和机器视觉理论及其应用的书籍。书中涵盖了从基础理论到实际编程实现的全过程,通过Visual C++和Matlab两种强大的...

    高级语言程序设计的精髓——算法设计

    为了改善当前高级语言程序设计的教学状况,以下几点建议或许能够提供帮助: 1. **强化算法教学**:教师应当将算法设计作为课程的重点内容之一,通过具体的案例和练习让学生理解算法设计的基本原则及其重要性。 2. *...

    计算方法上机程序——高斯赛德尔迭代法

    然而,它也有其局限性,比如对于不收敛的情况(例如,矩阵不是正定的),可能需要其他策略如松弛因子来改善。 在提供的压缩包文件 "GS迭代" 中,很可能包含了一个实现高斯-赛德尔迭代法的程序。这个程序可能使用...

    快速排序 分治法——C++代码

    在C++中实现快速排序,可以使用函数指针来处理不同类型的元素,使其具有良好的泛型性。以下是一个简单的快速排序函数模板的示例: ```cpp #include using namespace std; template int partition(T arr[], int ...

    c++编程思想 中文版(Thinking in C++)

    9. **C++11及以后的新特性**:自C++11标准发布以来,C++引入了许多新特性,如右值引用、lambda表达式、自动类型推断(auto)、统一初始化等,这些都极大地改善了C++的编程体验。 学习《C++编程思想》这本书,不仅...

    Effective+C+++3rd+chm+中文版(代码加亮)

    对于 C++ ——一种以拥有非同寻常的能力范围和表现力而自豪的语言——更是尤其如此。如果能正确使用,与 C++ 共事是一件令人快乐的事情。极多样的设计样式被直接表达并有效实现。对于 classes(类),functions...

    数字图像处理与机器视觉 Visual C++与Matlab实现配套光盘

    通过使用两种强大的编程语言——Visual C++和Matlab,这本书旨在教授如何将理论转化为实际操作,从而在实际项目中解决复杂的问题。 数字图像处理是计算机科学的一个分支,专注于对图像数据进行操作以提取有用信息或...

    DEV C++安装-2021.01.11.pdf

    Dev-C++ 使用了功能强大的编辑器——EIDT,并且支持多种编译器,如 GNU GCC 和 G++。该软件因其简洁的界面和丰富的功能而受到编程初学者的喜爱。 #### 二、Dev-C++ 的下载与安装 ##### 1. 下载官方最新版本 Dev-...

    effective stl

    世界级C++大师Scott Meyers之Effective三部曲之一,中国C++技术先驱及著名作译者潘爱民先生经典译作——如同Meyers的其他著作一样,本书充满了从实践中总结出来的智慧,其清晰、简明、透彻的风格,必将使每一位STL...

    C++编程思想:C++的内在哲学原则

    《C++编程思想》是一本由Bruce Eckel撰写的权威性书籍,它不仅仅局限于C++语言的基础语法介绍,而是从更深层次的角度——即哲学高度来探讨C++的设计理念与编程思想。本书旨在帮助读者理解并掌握面向对象编程的核心...

    基于C++&Qt实现的在线点餐系统(客户端+服务端——.zip

    Qt则是一个跨平台的C++图形用户界面库,提供了丰富的组件和工具,使得开发者可以快速创建出美观且功能强大的桌面及移动应用程序。 在本项目中,C++作为主要的编程语言,负责处理业务逻辑、数据存储以及与服务端的...

    数字图像处理与机器视觉——Visual C++与Matlab实现(pdf+附书源码)

    《数字图像处理与机器视觉——Visual C++与Matlab实现》是一本深入探讨图像处理和机器视觉技术的书籍,特别适合计算机科学、电子工程或相关领域的学生和从业者。书中不仅涵盖了理论知识,还提供了丰富的实践代码,以...

Global site tag (gtag.js) - Google Analytics