C++学习笔记(二)
来源:互联网 发布:正规的淘宝代运营 编辑:程序博客网 时间:2024/06/06 17:39
1.对象的定义
(1)全局变量系统会给他提供初始值0,局部变量或者通过new表达式动态分配的,系统不会提供初始值,可能是含有一个随机数,也可能是以前使用过的结果。
(2)C++支持两种形式的初始化。第一种形式是使用赋值操作符的显示形式;第二种是隐士形式,初始化被放在括号中:int ival(1024); string project("jiefu");
2.指针类型
(1)指针持有另一个对象的地址,使我们能够间接地操作这个对象。指针的典型用法就是构建一个链接的数据结构,如树、链表等;
(2)空类型指针:它可以被任何数据指针类型的地址值赋值;
void *pv = pi;
我们不能够操作空类型指针所指向的对象,只能传递该地址值或将它与其他地址值做比较;
(3)指针可以让他的地址值增;加或减少一个整数值,这类指针操作,被称为指针的算术运算;指针加2意味着给指针持有的地址值增加了该类型两个对象的长度;
3.字符串类型
(1)C++提供了两种字符串的表示:C风格的字符串和标准C++引入的string类类型;
char *p1 = 0;//p1不指向任何一个数组对象
const char *p2 = "";//p2指向空字符
常见错误1:
#include <iostream.h>
const char *st = "the expense of spirit\n";
int main(int argc, char* argv[])
{
int len = 0;
while(st++){
++len;
}
cout<<len<<"; "<<st;
return 0;
}
//程序会无限循环,因为st没有解除引用;
错误2:
#include "stdafx.h"
#include <iostream.h>
const char *st = "the expense of spirit\n";
int main(int argc, char* argv[])
{
int len = 0;
while(*st++){
++len;
}
cout<<len<<"; "<<st;
return 0;
}
改正1:st = st-len;//依然存在错误
改正2:st = st-len-1;//正确但不美观
改正3: const char *p = st;
while(*p++);
定义第二个指针,用st对它做初始化;
补丁(patch):把某些东西伸展开以便补上现有程序中的漏洞;
string类型:
#include<string>
using namspace std;
string st("the expense of spririt\n");
cout<<"the size of "<<st<<"is"<<st.size();
C风格的字符串和string字符串转换:
例1:string s1;
const char *pc = "hello world";
s1 = pc;//可以的
反之:
char *str = s1;//编译的时候会出现类型错误
改1:char *str = s1.c_str();//错误,返回值为常量
改2:const char *str = s1.c_str();//正确
迭代器:是指针的类抽象,由标准库提供;
4.const 限定修饰符
(1):只读性
(2):因为常量在定义后就不能被修改,所以它必须被初始化;未初始化的常量定义将导致编译错误;
5.引用类型(reference)
(1):它可以用作对象的另一个名字;通过引用我们可以间接地操作对象,使用方式类似于指针,但是不需要指针的语法;在实际的程序中,引用主要被用作函数的形式参数--通常将类对象传递给一个函数。
(2):引用类型由类型标识符和一个取值操作符来定义,引用必须被初始化:
int ibal = 1024;
int &refval = ival;
(3):一旦引用已经定义,它就不能再指向其他的对象,故必须要初始化;
6.多维数组
int ia[] = {0,1,2,3,4,5,6,,7,,8,9,,0};
a:代表这数组中的一个元素的地址,它的类型是数组元素类型的指针;
7.vector容器类型
vector类为内置数组提供了一种替代表示,与string类一样,vector类是随标准C++引入的标准库的一部分。
#include <vector>
使用vector有两种不同的形式,即所谓的数组习惯和STL习惯。
(1)数组习惯:vector<int> ivec(10);
vector的元素被初始化为与其类型相关的缺省值,算术和指针类型的缺省值是0.对伊class类型,缺省值可通过调用这类的缺省构造函数获得;
显式初始化:
vector<int> ivec(10,-1);定义了ivec ,它包含是个int型的元素,每个元素都被初始化为-1;
(2)STL习惯:定义一个空的vector :vector<string> text;
8.typedef名字
typedef机制为我们提供了一种通用的类型定义设施,可以用来为内置的或用户定义的数据类型引入助记符号。
- c学习笔记(二)
- C语言学习笔记(二)
- 《C和指针》学习笔记(二)
- c++primer学习笔记(二)
- C++Primer学习笔记(二)
- c++Templates学习笔记(二)
- C语言学习笔记(二)
- [C++]C++学习笔记(二)
- C语言程序学习(二)笔记
- 《Effective C++》学习笔记(二)
- Objective-C学习笔记(二)-HelloWorld
- C/C++学习笔记(二)
- Objective-c 学习笔记(二)
- 《c专家编程》学习笔记(二)
- C语言学习笔记(二)
- C语言学习笔记(二)
- 学习C的一些笔记(二)
- 《effective c++》学习笔记(二)
- 自制编译器:后端代码生成(三)
- osgEarth开发之OSG解构——失败的尝试
- 电路学习笔记(一)
- 在前台用 JS 清空 服务器控件里面的值 剩余字数验证 邮箱验证 非空验证
- 如何预测用户query意图
- C++学习笔记(二)
- jar使用
- 在线学习编程网站收集
- JFileChooser文件类型筛选
- 在Ubuntu上为Android系统编写Linux内核驱动程序
- AVL樹旋轉圖解
- opencv初识,敬初学者,opencv安装办法
- 这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下
- Python修炼--常用字符串、数学函数