指针的算术运算
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:
本文详细解释了C语言中指针执行整数加减运算的原理,包括如何计算指针的算术表达式及其结果。通过具体实例展示了在不同数据类型下指针移动的实际效果。
1万+

被折叠的 条评论
为什么被折叠?



