指针的算术运算

来源:互联网 发布:尘埃3优化 编辑:程序博客网 时间:2024/04/29 17:23

指针的算术运算

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

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

下面的程序

1234567int 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个字节,笔者的机器

使用短而不是在同一程序

1234567short nValue = 7;short *pnPtr = &nValue; cout << pnPtr << endl;cout << pnPtr+1 << endl;cout << pnPtr+2 << endl;cout << pnPtr+3 << endl;Outputs:


0 0
原创粉丝点击