[C++学习] C++ Primer 第4版 习题4.18

原创 2012年03月30日 13:38:53

如有错误敬请指正.

 

这个习题需要注意以下几点:

 

1.指针的加减操作,在它指向一组元素(比如数组)的时候,是比较有意义的.

指针+n ,表示 移动 n个 元素类型大小 的内存单元.即 指向往后数第n个元素.

这里 n可以为 负数 ,表示指向往前数第n个元素.

 

2.pointer 和 array 的关系,和 iterator 和 vector 的关系非常类似,有许多相同的性质.

但是也有许多不同.

比如 iterator 一旦超过了vector 的 [begin(),end()]区间,运行时就会报错.

但 pointer 即使超过了 array 的范围,也不会出错,只有在超过范围利用这个超过范围的pointer取或设置数组的值得时候,

才会出错.

 

3.

两个指针相减的值是 ptrdiff_t 类型的数值,这种类型是 signed的,而不是 size_t类型( unsigned )的.

所以允许负数的出现.

比如

int arr[10];

int *p1 = &arr[3];

int *p2 = &arr[5];

p1-p2 的结果 就会是 -2,而不会是一个很大的 负数.

 

利用指针的加减法,可以更加灵活的操作指针.

比如

p1 += p2-p1 等同于  p1 = p2,无论 p1和 p2谁在前谁在后都成立.

 

4.

指针许多地方和iterator 接近,所以用指针遍历数组时,也可以参考iterator遍历vector.

 for(int *pbegin = arr,*pend = arr+arr_size;pbegin!=pend;++pbegin)

注意体会这个 for 循环 和 iterator 的相似之处.

 

#include<iostream>
#include<string>
#include<vector>
#include"GlobalDefine.h"
#include"GlobalDefine.h"
#include"Double.h"

using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;

int main()
{
	const size_t arr_size = 10;
	int arr[arr_size];

	for(int *pbegin = arr,*pend = arr+arr_size;pbegin!=pend;++pbegin)
	{
		*pbegin = 3;
	}

	return 0;
}


 

C++ Primer 第四版中文完整版 和答案完整版

最近想再看一遍C++ Primer ,于是在网上找了第四版的电子版和习题答案 完整版的,现在传到CSDN上面供大家免费下载。希望能帮助到大家...... 本版本的电子版书籍和答案全部是完整版的。...
  • BBOOT
  • BBOOT
  • 2014年06月28日 15:12
  • 2329

C++ Primer中文版(第4版)

http://book.csdn.net/bookfiles/17/ C++ Primer中文版(第4版)
  • dujun1682007
  • dujun1682007
  • 2007年02月10日 21:31
  • 657

C++ Primer第四版(中文版) pdf下载

编辑推荐 《C++ Primer中文版(第4版)》对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使《C++ Primer中文版(第4版)》成为C++初学者的最佳指南;对于...
  • u012550652
  • u012550652
  • 2013年10月23日 23:08
  • 3349

C++ Primer中文版(第4版 特别版)

简单介绍:什么;哈哈。怎么向家里交代啊,你别误会?你是来找我们的吧,于是。其他人也全部靠在了我的身边。头剪得就 本文写于:2012年10月03日;更不是弓箭手 计划:什么;哈哈。怎...
  • i_like_cpp
  • i_like_cpp
  • 2012年10月08日 12:28
  • 1443

为《C++ Primer》第5版中文版写推荐序

花了几个晚上把C++ Primer第5版中文版翻看了一遍,主要关注2011标准中新增的一些要素的讲解。 ------------------------------ 推荐序 书名:C++ P...
  • panaimin
  • panaimin
  • 2013年09月14日 23:35
  • 6775

C++ Primer习题集(第5版)

C++ Primer习题集(第5版) C++ Primer(Fifth Edition)由三位C++大师Stanley B. Lippman、Josée Lajoie 和Barbara E....
  • chengying332
  • chengying332
  • 2015年01月28日 09:47
  • 2288

C++Primer第五版 第十六章习题答案(51~60)

51:知识点1:可变函数模版就是指一个接受可变数目参数的模版函数或者模版类,可变数目的参数被称为参数包,分为两种:模版参数包,表示零个或多个模版参数,函数参数包,表示零个或多个函数参数 知识点2:C+...
  • misayaaaaa
  • misayaaaaa
  • 2017年03月18日 09:29
  • 1503

c++ Primer Plus(第六版)第十六章习题,写代码之路

c++ Primer Plus(习题16.1) //让用户输入回文的单词,就是那种倒着读和顺着读一样意思的 //实现这个功能有很多方法,用了一种简单的方法 #include #include usi...
  • Robot_x
  • Robot_x
  • 2017年02月08日 20:19
  • 346

C++ Primer Plus 第六版 所有章节课后编程练习答案

C++ Primer Plus 第六版 所有章节课后编程练习答案
  • u013779722
  • u013779722
  • 2017年11月01日 20:32
  • 558

c++ Primer Plus(第六版)第十一章,编程练习之路

c++ Primer Plus(第六版)第十一章,个人学习记录,成长中
  • Robot_x
  • Robot_x
  • 2017年01月14日 12:55
  • 327
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[C++学习] C++ Primer 第4版 习题4.18
举报原因:
原因补充:

(最多只允许输入30个字)