C++学习笔记~
来源:互联网 发布:淘宝商品销量统计 编辑:程序博客网 时间:2024/06/07 19:20
1、访问外部成员用::x=2;
2、char** p; //到字符的指针的指针;
3、int(*f)(char *); //到函数的指针,这种函数以char*为参数,返回int
4、数组中如果初始赋值太少,剩余的将被设为0;
5、如果从一个指针减去另一个指针,结果就是这两个指针之间的数组元素的个数。
int i1=&v1[5]-&v1[3]; //i1=2(必须是同一个数组的指针)
6、常量const必须初始化;
7、使用一个指针涉及到两个对象:该指针本身和被它所指的对象。将一个指针的声明用const“预先固定”将使那个对象而不是使这个指针成为常量。
如:void f(char* p)
{
char s[]="Gorm";
const char * pc= s; //指向常量
pc[3] = '8'; //错误:pc是指向常量的
pc= p; //OK
char * const cp =s; //常量指针
cp[3]= 'a'; //OK
cp= p; //错误:cp是常量指针
const char *const cpc = s; //到const的const指针
cpc[3] = 'a'; //错误:cpc指向常量
cpc = p; //错误:cpc本身是常量
}
////////////////////////////////////////////////////////////////////指向void的指针
void f(int *pi)
{
void * pv=pi; //可以,从int*到void*的隐式转换式
*pv; //错误:void*不能简介引用
pv++; //错误:void*不能增量(不知道被指对象的大小)
int* pi2=static_cast<int*>(pv); //显式转换回int*
double*pd1=pv; //错误
double*pd2=pi; //错误
double*pd3=static_cast<double*>(pv); //不安全
}
///////////////////////////////////////////////结构体
9、两种结构体总是不同的类型
s1 x;
s2 y=x; //错误,类型不匹配
2012-11-7
定义:用于为变量分配存储空间
声明:用于向程序声明变量的类型和名字,(可以通过使用extern关键字声明变量而不定义它)
变量可以声明多次,但只能定义一次
extern double pi //声明
double pi //定义
extern double pi=3.14 //声明+定义
在全局作用域声明的const变量时定义该对象的文件的局部变量,此变量值存在于那个文件中,不能被其他文件访问通过指定const变量为extern,就可以在整个程序中访问
引用是它绑定的对象的另一名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。
2012-11-8
string是一个类string str //str是一个对象
str.empty() //str为空返回true
str.size() //返回str中字符的字数,是string::size_type型,不要把它赋给一个int变量,直接用。
str[n] //返回str中位置为n的字符,位置从0开始
str1+str2 //连接成新串
vector不是一种数据类型,而只是一个类模版,可用来定义任意多种数据类型。vector类型的每一种都指定了其保存元素的类型。因此,vector<int>和vector<string>都是数据类型。
v.empty()
v.size()
v.push_back(t) //在末尾增加
v[n] //位置为n的元素
v1=v2
v1==v2
vector类型总是包括vector的元素的类型:
vector<int>::size_type //OK
vector::size_type //error
2012-11-12
int a=10,b=20;
int *pa,*pb;
pa=&a,pb=&a;
*pa=b; //*pa=20,a=20;
pb=b; //*pb=20, a=10;
指向const对象的指针必须也是const指针类型。
const int *p //指向const对象的指针,可以指向其他对象,但不可以改变对象的值
int *const p //const指针,不可以指向其他对象 ,可以改变对象自己的值
2012-11-13
动态分配数组 int *pia = new int[10];返回指向数组第一个元素的指针
size_t n = get_getsize();
int *p = new int[n];
for(int *q = p;q!=p+n;++q)
/process the array/
delete [] p;
string str2;
char *str=str2.c_str();//c_str函数返回c风格字符串
int int_arr[6]={0,1,2,3,4,5};
vector<int> ivec(int_arr,int_arr+6);//用数组给vector赋值,第二个指针指向被赋值的最后一个元素之后的地址空间
int ia[3][4] = {{0},{4},{8}};//给数组的每行第一个元素赋值
int *ip[4] //指向int型的指针数组
int (*ip)[4]; //指向包含4个元素数组的指针
typedef int int_array[4] // =typedef int[4] int_array;
int_array *p =ia; //指向包含4个元素数组的指针
21%5==-4
int i = 0,j;
j=++i; //j=1,i=1; ++i返回对象本身,这是左值
j=i++; //j=1,i=2; i++返回右值,i要后面才能计算出来。
2012-11-14
处理复合表达式
(1)如果有怀疑,则在表达式上按程序逻辑要求使用圆括号强制操作数的组合。
(2)如果要修改操作数的值,则不要在同一个语句的其他地方使用该操作数。如果必须使用改变的值,则把该表达式分割成两个独立的语句:在一个语句中改变该操作数的值,再在下一个语句使用它
输入ctrl+z后可以在后面添加cin.clear()继续输入。
2012-11-30
inline 内联函数,将函数指定为内联函数,(通常)就是将它在程序中的每个调用点上“内联地”展开。相当于直接把函数中的代码复制到调用的位置。能够节省开销。
2013-3-6
用vector存储派生类的对象时,会截去派生类中的部分,只保留基类部分,如果想要保存派生类中的部分,应该用vector存储对象指针。
- C++/C学习笔记
- 【C/C++】STL学习笔记
- C/C学习笔记/导言
- C/C学习笔记/结构
- 【c/c++】学习笔记1
- C学习笔记1
- TPC-C学习笔记
- c语言学习笔记
- C语言学习笔记
- C语言学习笔记
- 学习笔记之c
- C#-学习笔记
- Objective-C学习笔记
- C++PRIMER学习笔记
- C学习笔记
- C 学习笔记
- C/C++学习笔记
- 1.C学习笔记
- python里关于类方法和静态方法的区别
- iOS and iPhone Handling unhandled exceptions and signals
- 六、图的拓扑排序
- 手动删除Office2003注册表信息
- android学习之布局(layout)
- C++学习笔记~
- 基于libUSB的USB设备固件更新程序(数据传输部分)
- JavasSript中类的实现
- 根据移动终端(手机)请求头的UA信息,判断其操作系统
- windows server 2008 搜索的时候不能搜索文件内容,只搜索文件名解决方法
- 关于java生成exe的问题
- sql server 简单语句
- iPhone开发UIAlertView属性及使用方法
- 负距离-相互影响的迭代过程