一直在学习 发表于 2021-3-21 17:00:27

二维数组与指针

输出int型(占4个字节)二维数组列地址的指针值时,输出第0行1列的地址:&a+1
我试了一下,是这种运算顺序(&a)+1。
但是为什么相比较&a而言,在(&a)之后的+1,实际上是加的4?为什么不能理解成在地址值的基础上加上一个数字1而已

jackz007 发表于 2021-3-21 17:13:49

本帖最后由 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]
查看完整版本: 二维数组与指针