二维数组与指针
输出int型(占4个字节)二维数组列地址的指针值时,输出第0行1列的地址:&a+1我试了一下,是这种运算顺序(&a)+1。
但是为什么相比较&a而言,在(&a)之后的+1,实际上是加的4?为什么不能理解成在地址值的基础上加上一个数字1而已 本帖最后由 jackz007 于 2021-3-21 17:17 编辑
& a 的类型属于 int *,就是指向整型数的指针,其步进单位自然是 1 个整型数在内存中的存储空间,当然就是 4 个字节了。
#include <stdio.h>
int main(void)
{
int d , * p1 ;
char * p2 ;
p1 = & d ;
p2 = (char *) p1 ;
printf("p1 = %p\n" , p1) ;
printf("p1 + 1 = %p\n" , p1 + 1) ;
printf("p2 = %p\n" , p2) ;
printf("p2 + 1 = %p\n" , p2 + 1) ;
}
编译、运行实况
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
p1 = 0022FE88
p1 + 1 = 0022FE8C
p2 = 0022FE88
p2 + 1 = 0022FE89
D:\00.Excise\C>
注意 p2,p2 + 1 就是数组 d 起始地址加 1。
页:
[1]