#include <iomanip>

setpresition(int n); 设置输出精度浮点数是n.

【goto声明】

goto也被称为无条件分支语句购买勇于改变运行顺序的声明。goto一般声明格公式:

goto 牌号。

例:

  1. #include <iostream>
  2. using namespace std;
  3. int main(int args, char *argv[]) {
  4. int ivar = 0;
  5. int num = 0;
  6. label:
  7. ivar ++;
  8. num += ivar;
  9. if(ivar < 10) {
  10. goto label;
  11. }
  12. cout << num << endl;
  13. return 0;
  14. }

goto语句效率较低。

goto语句不能越过复合语句之外的变量定义的语句。

调用默认參数的函数使用方法举例:

  1. #include <iostream>
  2. using namespace std;
  3. void OutputInfo(const char* pchData="Stay hungry,Stay foolish.") {
  4. cout << pchData << endl; //输出信息
  5. }
  6. int main(int argc, int *argv[]) {
  7. OutputInfo(); //利用默认值作为函数实际參数
  8. OutputInfo("lasolmi"); //直接传递实际參数
  9. return 0;
  10. }

【可变參数】

声明可变參数的函数和声明普通函数一样,仅仅是參数列表中有一个"..."。比如:

void OutputInfo(int num, ...)

对于可变參数的函数。在定义函数时须要一一读取用户传递的实际參数。

能够使用va_list类型和va_start、va_arg、va_end 3个宏读取传递到函数中的參数值。使用可变參数须要引用STDARG.H头文件。

例:定义并调用可变參数函数

  1. #include <iostream>
  2. #include <stdarg.h>
  3. using namespace std;
  4. void OutputInfo(int num,...) {
  5. va_list arguments;
  6. va_start(arguments, num);
  7. while(num--) {
  8. char *pchData = va_arg(arguments,char*);
  9. int iData = va_arg(arguments, int);
  10. cout << pchData << endl;
  11. cout << iData << endl;
  12. }
  13. va_end(arguments);
  14. }
  15. int main(int argc, int *argv[]) {
  16. OutputInfo(2, "Bejing", 2008, "lasolmi", 2014);
  17. return 0;
  18. }

重载函数:指多个函数具有同样的函数标识符,但參数类型或參数个数不同。

函数调用时,编译器以參数的类型及个数来区分调用哪个函数。

【内联函数 inline】

使用内联函数能够降低函数调用带来的开销(在程序所在文件内移动指针寻找调用函数地址带来的开销),应该在函数实现代码非常简短或者调用该函数次数相对较少的情况下将函数定义为内联函数。

变量的存储类别:auto; static; register; extern

 auto变量:C++中默认的存储类型

  自己主动变量的作用域仅限于定义该变量的个体内。

动态存储,栈中不同个体中同意使用同名的变量而不会混淆。

static变量:

  在函数中定义就在函数中使用;但生命期为整个程序。

register变量:

  寄存器变量将局部变量的值存放在CPU的寄存器中,使用时不须要訪问内存,而直接从寄存器中读写。

  (1)寄存器变量属于动态存储方式。凡须要使用静态存储方式的变量不能定义为寄存器变量。

  (2)编译程序会自己主动决定哪个变量使用寄存器存储。register能够起到程序优化的作用。

 extern变量:

  在使用其它源文件的全局变量时,仅仅须要在本源文件里使用externkeyword来声明这个变量就可以。

指向函数的指针:指针变量也能够指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针,能够用一个指针变量指向函数,然后通过该指针变量调用此函数。

例:

  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4. int avg(int a, int b);
  5. int main(int argc, int *argv[]) {
  6. int iWidth, iLength, iResult;
  7. iWidth = 10;
  8. iLength = 30;
  9. int (*pFun)(int, int); //定义函数指针
  10. pFun = avg;
  11. iResult = (*pFun)(iWidth,iLength);
  12. cout << iResult << endl;
  13. return 0;
  14. }
  15. int avg(int a, int b) {
  16. return (a+b)/2;
  17. }

【引用】

引用的形式:

数据类型 & 表达式

比如:

int a = 10;

int & ia = a;

ia = 2;

定义了一个引用变量ia。它是变量a的别名,对ia的操作与对a的操作全然一样。ia=2把2赋给a。&ia返回a的地址,运行a=2和运行ia=2等价。

使用引用的说明:

(1)一个C++引用被初始化后,无法使用它再去引用还有一个对象,它不能被又一次约束。

(2)引用变量仅仅是其它变量的别名,对他的操作与原来对象的操作具有同样作用。

(3)指针变量与引用有两点主要差别:一个指针是一种数据类型,而引用不是一个数据类型,指针能够转换为它所指向变量的数据类型,以便赋值运算符两边的类型想匹配;而在使用引用时,系统要求引用和变量的数据类型必须同样,不能进行类型转换。二是引用使用起来比指针方

便。

(4)引用应该初始化,否则会报错。

使用引用传递參数

swap(int &a, int &b) {

    int tmp = a; a = b; b = tmp;

}

指针传递參数

swap(int *a, int *b) {

    int tmp = *a; *a = *b; *b = tmp;

}

a[i][j] == *(*(a+i)+j)

【指针数组】

一维指针数组的定义形式为:

类型名 *数组名[数组长度];

比如:int *p[5];

指针数组中的数组名也是一个指针变量,该指针变量为指向指针的指针。

例:使用结构体指针变量引用结构体成员。

  1. #include <iostream>
  2. using namespace std;
  3. int main(int argc, int *argv[]) {
  4. struct PERSONINFO {
  5. int index;
  6. char name[30];
  7. short age;
  8. }*pPersonInfo, pInfo={0,"lasolmi",21};
  9. pPersonInfo = &pInfo;
  10. cout << pPersonInfo->index << endl;
  11. cout << pPersonInfo->name << endl;
  12. cout << pPersonInfo->age << endl;
  13. return 0;
  14. }

【结构体的嵌套】

(1)在结构体中定义子结构体。

(2)在定义时声明其它已定义好的结构体变量。

可在声明结构体数组时直接对数组进行初始化:

  1. struct PersonInfo {
  2. int index;
  3. char name[30];
  4. short age;
  5. }Person[4] = {
  6. {1, "figo", 23},
  7. (2, "ling", 22),
  8. (3, "me", 21),
  9. (4, "cong", 20)
  10. };

【共用体】

定义共用体类型的一般形式为:

  1. union 共用体类型名 {
  2. 成员类型 共用体成员名1;
  3. 成员类型 共用体成员名2;
  4. ...
  5. 成员类型 共用体成员名n;
  6. };

共用体的大小:共用体每一个成员分别占有自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。一个共用体变量不能同一时候存放多个成员的值。某一时刻仅仅能存放当中的一个成员的值,这就是最后赋予它的值。

【枚举类型】

常见的枚举类型声明形式:

enum 枚举类型名

{

    标识符[=整型常量];

    标识符[=整型常量];

    标识符[=整型常量];

}枚举变量;

范例:枚举变量的赋值。

  1. #include <iostream>
  2. using namespace std;
  3. int main(int argc, int *argv[]) {
  4. enum Weekday {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
  5. int a = 2 , b = 1;
  6. Weekday day;
  7. day = (Weekday)a;
  8. cout << day << endl;
  9. day = (Weekday)(a-b);
  10. cout << day << endl;
  11. day = (Weekday)(Sunday+Wednesday);
  12. cout << day << endl;
  13. day = (Weekday)5;
  14. cout << day << endl;
  15. return 0;
  16. }

输出结果为:

2

1

3

5

【自己定义数据类型】

typedef <原类型名> <新类型名>

例:

typedef in INTEGER;

INTEGER a, b;

相当于:

int a, b;

版权声明:本文博主原创文章,博客,未经同意不得转载。

C++学习笔记1--基础知识的更多相关文章

  1. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  2. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

  3. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  4. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  5. Quartz学习笔记:基础知识

    Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...

  6. .net学习笔记---xml基础知识

    一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...

  7. Docker的学习笔记(一)基础知识

    概述 本人最近在学习docker相关的知识,既是工作本身的需要也是自己对技术的追求的必要,以后我也会推出容器相关的随笔,既可以增长自己的知识,也可以和读者广泛交流,岂不乐乎?话不多说.第一篇先介绍do ...

  8. Scala学习笔记--正则表达式基础知识、如何在scala内使用

    正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...

  9. (C/C++学习笔记) 一. 基础知识

    一. 基础知识 ● 程序和C/C++ 程序: 根据Wirth (1976), Algorithms + Data Structures = Programs. Whence C: 1972, Denn ...

  10. C#学习笔记(基础知识回顾)之枚举

    一:枚举的含义 枚举是用户定义的整数类型.在声明一个枚举时,要指定该枚举的示例可以包含的一组可接受的值.还可以给值指定易于记忆的名称.个人理解就是为一组整数值赋予意义. 二:枚举的优势 2.1:枚举可 ...

随机推荐

  1. 13.怎样自学Struts2之Struts2本地化[视频]

    13.怎样自学Struts2之Struts2本地化[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了,仅仅好传到百度云上: http://pan ...

  2. 关于identifier was truncated to '255' characters

    学习c++过程中,遇到在VC中使用set时DEBUG模式出现的警告 identifier was truncated to '255' characters in the debug informat ...

  3. Java流的理解

    最近做了一下Socket编程,其中有socket.getInputStream和socket.getOutputStream的问题. 想传输文件,感觉应该用FileInputStream和FileOu ...

  4. My97 DatePicker

    支持日期以及时分秒的选择, 国人开发, 还不错! 官网: http://www.my97.net/

  5. 基于MVC3下拉列表联动(JQuery)

    上次项目中遇到一个需要多个下拉列表联动的操作,今天有空将实现方式整理以便以后参考. 要达到的效果是,点击一个下拉框,则另一个下拉框的值发生对应变化.如:选择中国,则另个一下拉框里显示中国各个省份. 传 ...

  6. Flash-使用变形面板制作花朵

    在Flash中利用"变形"面板的"重置选取和变形"button(在变形面板右下角),能够自己主动将对象进行创造性变形地画图 步骤: (1)先导入一幅图像 (2) ...

  7. POJThe Doors AND NYIST 有趣的问题

    POJThe Doors AND NYIST 有趣的问题 题目链接:pid=227" target="_blank">Click Here~ 题目分析: 给你横纵坐 ...

  8. HibernateReview Day2–Hibernate体系结构

    本文摘自 李刚 著 <Java EE企业应用实战> 现在我们知道了一个概念Hibernate Session,只有处于Session管理下的POJO才具有持久化操作能力.当应用程序对于处于 ...

  9. spring问题排查-调低日志等级

    问题描写叙述 1. 页面经过一次改动后,提交后页面出现400错误,可是后台并没有输出不论什么错误信息. 2. debug监听应页面对应的提交链接也没有不论什么反应(没有进入后台的controller方 ...

  10. 强联通块tarjan算法

    http://poj.org/problem?id=1236第一问:需要几个学校存在软件,才能通过传递,使得所有的学校都有软件 用tarjan算法求出强联通分量后,将每个联通分量缩成一个点,那么问题1 ...