C++学习笔记1--基础知识
#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--基础知识的更多相关文章
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- Quartz学习笔记:基础知识
Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...
- .net学习笔记---xml基础知识
一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...
- Docker的学习笔记(一)基础知识
概述 本人最近在学习docker相关的知识,既是工作本身的需要也是自己对技术的追求的必要,以后我也会推出容器相关的随笔,既可以增长自己的知识,也可以和读者广泛交流,岂不乐乎?话不多说.第一篇先介绍do ...
- Scala学习笔记--正则表达式基础知识、如何在scala内使用
正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...
- (C/C++学习笔记) 一. 基础知识
一. 基础知识 ● 程序和C/C++ 程序: 根据Wirth (1976), Algorithms + Data Structures = Programs. Whence C: 1972, Denn ...
- C#学习笔记(基础知识回顾)之枚举
一:枚举的含义 枚举是用户定义的整数类型.在声明一个枚举时,要指定该枚举的示例可以包含的一组可接受的值.还可以给值指定易于记忆的名称.个人理解就是为一组整数值赋予意义. 二:枚举的优势 2.1:枚举可 ...
随机推荐
- Android中振动器(Vibrator)的使用
系统获取Vibrator也是调用Context的getSystemService方法,接下来就可以调用Vibrator的方法控制手机振动了.Vibrator只有三个方法控制手机振动: 1.vibrat ...
- SVN中正确的add操作和delete操作
add操作: delete操作:
- uva 11722 - Joining with Friend(概率)
题目连接:uva 11722 - Joining with Friend 题目大意:你和朋友乘火车,而且都会路过A市.给定两人可能到达A市的时段,火车会停w.问说两人能够见面的概率. 解题思路:y = ...
- asp.net Form 认证【转】
第一部分 如何运用 Form 表单认证 一. 新建一个测试项目 为了更好说明,有必要新建一个测试项目(暂且为“FormTest”吧),包含三张页面足矣(Default.aspx.Logi ...
- OUI-67076 : OracleHomeInventory was not able to create a lock file" in Unix
Symptoms The command "opatch lsinventory" reports the error: OUI-67076:OracleHomeInventory ...
- 使用 angular directive 和 json 数据 D3 随着标签 donut chart演示样本
使用angular resource载入中priorityData.json中间json数据,结合D3绘制甜甜圈图.执行index.html其结果见于图.: priorityData.json中jso ...
- FREESWITCH SEESION
SESSION SESSION为FS的核心概念之一,所以需要拿出来专门的分析下. 从以下几个方面进行分析,结构类型,资源的管理,对于呼叫的意义,规格. 1.结构类型 每一次呼叫会申请一个session ...
- windows phone (24) Canvas元素A
原文:windows phone (24) Canvas元素A Canvas元素表示定制一个区域,并可以通过相对坐标定义子元素位置,在一下情况下Canvas是不可见的 Height 属性等于 0. W ...
- malloc功能具体解释
一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...
- lambda Join /Group by/ Contains
1.Join Contains