#include <iomanip>

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

【goto声明】

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

goto 牌号。

例:

#include <iostream>
using namespace std;
int main(int args, char *argv[]) {
int ivar = 0;
int num = 0;
label:
ivar ++;
num += ivar;
if(ivar < 10) {
goto label;
}
cout << num << endl;
return 0;
}

goto语句效率较低。

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

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

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

【可变參数】

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

void OutputInfo(int num, ...)

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

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

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

#include <iostream>
#include <stdarg.h>
using namespace std;
void OutputInfo(int num,...) {
va_list arguments;
va_start(arguments, num);
while(num--) {
char *pchData = va_arg(arguments,char*);
int iData = va_arg(arguments, int);
cout << pchData << endl;
cout << iData << endl;
}
va_end(arguments);
}
int main(int argc, int *argv[]) {
OutputInfo(2, "Bejing", 2008, "lasolmi", 2014);
return 0;
}

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

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

【内联函数 inline】

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

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

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

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

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

static变量:

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

register变量:

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

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

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

 extern变量:

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

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

例:

#include <iostream>
#include <iomanip>
using namespace std;
int avg(int a, int b);
int main(int argc, int *argv[]) {
int iWidth, iLength, iResult;
iWidth = 10;
iLength = 30;
int (*pFun)(int, int); //定义函数指针
pFun = avg;
iResult = (*pFun)(iWidth,iLength);
cout << iResult << endl;
return 0;
}
int avg(int a, int b) {
return (a+b)/2;
}

【引用】

引用的形式:

数据类型 & 表达式

比如:

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];

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

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

#include <iostream>
using namespace std;
int main(int argc, int *argv[]) {
struct PERSONINFO {
int index;
char name[30];
short age;
}*pPersonInfo, pInfo={0,"lasolmi",21};
pPersonInfo = &pInfo;
cout << pPersonInfo->index << endl;
cout << pPersonInfo->name << endl;
cout << pPersonInfo->age << endl;
return 0;
}

【结构体的嵌套】

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

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

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

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

【共用体】

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

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

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

【枚举类型】

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

enum 枚举类型名

{

    标识符[=整型常量];

    标识符[=整型常量];

    标识符[=整型常量];

}枚举变量;

范例:枚举变量的赋值。

#include <iostream>
using namespace std;
int main(int argc, int *argv[]) {
enum Weekday {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
int a = 2 , b = 1;
Weekday day;
day = (Weekday)a;
cout << day << endl;
day = (Weekday)(a-b);
cout << day << endl;
day = (Weekday)(Sunday+Wednesday);
cout << day << endl;
day = (Weekday)5;
cout << day << endl;
return 0;
}

输出结果为:

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. SE 2014年4月3日

    一  OSPF协议都支持哪些特殊区域?每种特殊区域都有什么特点. OSPF协议支持的特殊区域主要有stub区域.totally stub区域以及nssa区域,其中stub区域一般出现在末梢网络,即它的 ...

  2. 6 款好用的 PC+Android 同步 GTD 软件

    6 款好用的 PC+Android 同步 GTD 软件 最近老鼠工作积极性比较高(其实只要是买平板电脑的欲望在鼓舞着干劲),所以每天很多任务安排,为了不混乱,免不了要用 GTD(Go to do)软件 ...

  3. 水晶易表 Xcelsius 2008 安装指南 完美支持office2010(亲手体验)

    Xcelsius2008水晶易表是一款很好用的软件.网上已经有破解方法,大家能够尝试一下这款经典软件了. 可是网上对于安装破解过程介绍的不详细或者纷乱,今天我汇总了全部的方法最终成功的安装上了,而且支 ...

  4. warning: directory not found for option &#39; &#39;

    解决: 选择项目名称-->Targets-->Build Settings-->Search Paths-->Library Search Paths 删除相应路径

  5. hadoop日志分析

    一.项目要求 本文讨论的日志处理方法中的日志,仅指Web日志.事实上并没有精确的定义,可能包含但不限于各种前端Webserver--apache.lighttpd.nginx.tomcat等产生的用户 ...

  6. 辛星分析html中间name和id 差额

    朋友们可以新手也能很容易区分id和class,但不一定很容易区分id和name,以下说一下二者的差别和联系. 首先是联系,它们都能够用来标记一个元素,并且能够用JavaScript来操作,可是操作方法 ...

  7. JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串

    insert() 插入字符串 StringBuffer insert(int index,String str) StringBuffer insert(int index,char ch) Stri ...

  8. hdu5338 (二进制,双指针)

    这种双循环的优化问题碰到过很多了.层出不穷. 但无非就是要利用前面循环时,所产生的信息,从而减少计算. 可以注意到log其实是不超过40的, 那么以这方面入手,时间复杂度就可以降为nlogn log= ...

  9. 关于QTP

    关于QTP,我也才接触,只是上来记录一下安装过程,免得以后忘记,又要查一堆资料. 简单介绍一下QTP: QTP的基本功能包括2个部分:一部分是提供给初级用户使用的关键字视图:另一部分是提供给熟悉VBS ...

  10. Redis安装及简单測试

    摘要: Redis是眼下业界很受到欢迎的一个内存数据库,一般用作系统的中间缓存系统,用以提升总体商业系统的吞吐量和响应速度.本文将简要介绍安装的主要过程以及给出一个简要的測试代码. 1.  系统环境和 ...