您的位置:首页 > 编程语言 > C语言/C++

c++学习拾遗【一】

2011-04-13 21:27 274 查看
字符串1.几个特殊的数据类型

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)

vector 下标类型 vector::size_type

string 下标类型 string::size_type

数组下标类型 size_t

2.字符串与数组

string s1,s2=”Hello”;
s1 = s2; // 字符串可以直接赋值
int ia[] = {0, 1, 2};
int ia2[3];
ia2 = ia; //数组不可以

3.动态数组

size_t n = get_size(); //允许动态分配空数组 get_size()运行时才知道值
int* p = new int[n];

string *psa = new string[10]; //string不是内置类型,分配了内存,初始化了元素
int *pia = new int[10]; //int是内置类型,分配了内存,不初始化元素 (所以const类型时则有错)
int *pia = new int[10](); // 强制要求编译器初始化

4.C风格字符串

#include<cstdlib>
int *pi = NULL; // NULL是C 风格

#incldue<cstring>
strlen(s) strcmp(s1,s2)….
char ca[] = {‘c’, ‘+’, ‘+’};
strlen(ca);//危险 strlen根据字符串结束符null来判断结尾

5.const与指针 C++强制要求指向const对象的指针也必须具有const特性,但允许把非const对象的地址赋给指向const对象的指针。

const double pi = 3.14;
double *ptr = π //错误

double dval = 3.14;
const double *cptr;
cptr = &dval //正确 所以可以个性const指针指向对象的值

6.自增操作区别

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++)

7.箭头操作符 ->

C++为在点操作符后使用的解引用操作定义的同义词.

(*p).foo; ó p->foo;

8.sizeof操作符

对数组进行sizeof操作等效于将对其元素类型做sizeof操作的结果乘上数组元素的个数

int sz = sizeof(ia)/sizeof(*ia);//取数组元素个数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: