C++ Primer 笔记3

1、特殊的字符数组
  char ca1[] = {'C', '+', '+'}; // no null
  char ca2[] = {'C', '+', '+', '\0'}; // explicit null
  char ca3[] = "C++";    //null terminator added automatically
  char *p = ca1;
  while(*p)
  {
        cout<<*p<<" ";
        p++;
    }
    此时输出,由于ca1没有结束符'\0',除了输出“C++”还会一直向后输出,直到遇见第一个'\0'。
2、 现在C++程序采用vector类型和迭代器取代一般的数组、采用string类型取代C风格字符串。
3、 理解指针声明语句时,请从右向左阅读。
4、指针和引用的区别:
    引用总是指向某个对象,定义引用时没有初始化是错误的。
    给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对象关联。引用一经初始化,就始 终指向同一个特定对象。
5、两个指针减法操作的结果是标准库类型 ptrdiff_t 的数据。
6、指针和tpyedef
typedef string *pstring;
const pstring cstr;
声明const pstring时,const修饰的是pstring的类型,这是一个指针。因此,该声明语句应该是 把cstr定义为指向string类型对象的const指针,这个定义等价于:
string *const cstr;
7、用typedef写const类型定义时,const限定符加在类型名前面容易引起对所定义的真正类型的误解:
string str;
typedef string *pstring;
const pstring cstr1 = &str;//written this way the type is obscured
pstring const cstr2 = &str;// all three decreations are the same type
string *const cstr3 = &str;//they're all const pointers to string
8、C风格字符串的标准库函数    #include<cstring>
strlen();    strcmp();  strcat();  strcpy();  strncat();  strncpy();
在使用处理C风格字符串的标准库函数时,牢记字符串必须以结束符null结束。
9、初始化动态分配的数组: 使用跟在数组长度后面的一对空圆括号,对数组元素做值初始化
  int *pia2 = new int[10](); 圆括号要求编译器对数组做值初始化。
10、允许动态分配空数组
size_t n = get_size();
int *p = new int[n];
for(int *q = p; q != p + n; ++q){...}
如果get_size()返回0,代码仍然正确执行。C++虽然不允许定义长度为0的数组变量,但明确指出,调用new动态创建长度为0的数组是合法的。
11、const char *pstr = str.c_str(); //c_str函数返回C风格字符串,即返回指向字符数组首地址的指针,该数组存放了与string对象相同的内容,并且以null结束。
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值