c++学习拾遗【一】
时间:2011-04-13 来源:箜
string s(“Hello”);
s.size()==6 string::size_type (unsigned type)
int *p1,*p2;
ptrdiff_t n = p1 – p2;
#include<cstddef>
ptrdiff_t (signed int)
string s1,s2=”Hello”; // 字符串可以直接赋值
s1 = s2;
int ia[] = {0, 1, 2}; //数组不可以
int ia2[3];
ia2 = ia;
动态数组
size_t n = get_size(); //允许动态分配空数组
int* p = new int[n];
string *psa = new string[10];//分配了内存,初始化了元素
int *pia = new int[10]; //内置类型,分配了内存,不初始化元素 (所以const类型时则有错)
int *pia = new int[10](); // 要求编译器初始化
vector 下标类型 vector::size_type
string 下标类型 string::size_type
数组下标类型 size_t
C风格字符串
#include<cstdlib>
int *pi = NULL C 风格
#incldue<cstring>
strlen(s) strcmp(s1,s2)….
char ca[] = {‘c’, ‘+’, ‘+’};
strlen(ca);//危险 strlen根据字符串结束符null来判断结尾
C++强制要求指向const对象的指针也必须具有const特性,但允许把非const对象的地址赋给指向const对象的指针。
const double pi = 3.14;
double *ptr = π //错误
double dval = 3.14;
const double *cptr;
cptr = &dval //正确 所以可以个性const指针指向对象的值
自增操作区别
i ++; // 需要保存原来的i值
++ i; //所做的工作更少
vector<int> ivec;
int cnt = 10;
while(cnt>0)
ivec.pust_back(cnt--);
vector<int>::iterator iter = ivec.begin();
while(iter != ivec.end())
cout << *iter++ <<endl; // *iter++ ó *(iter++)
箭头操作符 ->
C++为在点操作符后使用的解引用操作定义的同义词.
(*p).foo; ó p->foo;