您的位置:首页 > 其它

指针的算术运算

2014-09-26 12:31 381 查看
指针的算术运算

C语言允许你在指针执行整数的加减运算。如果pnptr指向一个整数,pnptr + 1 pnptr后在内存中的地址的下一个整数。pnptr - 1是在pnptr以前的整数地址。

请注意,pnptr + 1不在pnptr返回地址,但下一个对象,pnptr分型。如果pnptr指向一个整数(假设4字节),pnptr + 3意味着在pnptr 3个整数,这是12个地址后pnptr。如果pnptr指向一个char,这始终是1字节,pnptr + 3意味着在pnptr 3字符,这是3个地址后pnptr。

计算一个指针的算术表达式的结果时,编译器总是乘以整数操作数所指对象的大小。这就是所谓的缩放。

下面的程序:

1
2
3
4
5
6
7
int nValue = 7;
int *pnPtr = &nValue;

cout << pnPtr << endl;
cout << pnPtr+1 << endl;
cout << pnPtr+2 << endl;
cout << pnPtr+3 << endl;


正如你所看到的,这些地址不同(7C 4 + 4 = 80的十六进制)。这是因为一个整数是4个字节,笔者的机器。

使用短而不是在同一程序:
1
2
3
4
5
6
7
short nValue = 7;
short *pnPtr = &nValue;

cout << pnPtr << endl;
cout << pnPtr+1 << endl;
cout << pnPtr+2 << endl;
cout << pnPtr+3 << endl;
Outputs:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: