C++编程思想 第1卷 第3章 创建复合类型 数组 指针和数组 指针算术 运算符

指针运算可以使用运算符 -- + - 
+ - 使用有限制
+ - 不能两个指针相加
- 表示两个指针相隔的元素个数

一个指针可以加上或减去一个整数


//: C03:PointerArithmetic.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
#include <iostream>
using namespace std;

#define P(EX) cout << #EX << ": " << EX << endl;

int main() {
  int a[10];
  for(int i = 0; i < 10; i++)
    a[i] = i; // Give it index values
  int* ip = a;
  P(*ip);
  P(*++ip);
  P(*(ip + 5));
  int* ip2 = ip + 5;
  P(*ip2);
  P(*(ip2 - 4));
  P(*--ip2);
  P(ip2 - ip); // Yields number of elements
  getchar();
} ///:~
这个程序以宏开始
宏实业字符串化的预处理器的特征 表达式用一个#实现
# 作用是获得任何一个表达式并把它转换成为一个字符数组
# 允许打印一个表达式 ,后面接冒号,再接一个表达式的值
++ -- 前缀和后缀方式对指针说有效
这里只使用前缀,可以看到运算后的效果,后缀不能马上看到
++ -- 只能加上和减去整数值


输出
*ip: 0
*++ip: 1
*(ip + 5): 6
*ip2: 6
*(ip2 - 4): 2
*--ip2: 5
ip2 - ip: 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值