黑马程序员技术交流社区

标题: 请问指针p+1代表的是什么意思? [打印本页]

作者: 用晦而明    时间: 2015-8-9 18:10
标题: 请问指针p+1代表的是什么意思?
请详细说明,谢谢大家!~

作者: 墨琰    时间: 2015-8-9 22:00
P是指针变量,存储的是地址;
P+1代表地址值从低地址到高地址;
指针是什么类型的就移动几个字节空间,如果是int类型就移动4个字节;

作者: ycsyoung    时间: 2015-8-9 23:10
楼上正解
作者: lzfree    时间: 2015-8-9 23:53
学习了二楼
作者: 默凉雨    时间: 2015-8-10 09:02
补充:在二维数组中,表示列的形式进行移动。
作者: ChelseaKD    时间: 2015-8-10 21:03
二楼厉害啊、
作者: hejunxin    时间: 2015-8-10 21:31
代表上一个数组元素
作者: why19910522    时间: 2015-8-10 21:59
这是指针的运算,代表指针p存储的地址向内存中的高位移动一个步长,而步长的长度与指针定义时的类型有关.如果是int类型指针,那么步长就是4个字节,double类型的指针其步长为8个字节.如果是数组类型的指针,则一个步长等于数组长度乘以数组元素的类型.
         例如
                   int a = 1;
                   int *p = &a;
                   我们假设,a的地址是0xabc100,那么p存储的地址就是0xabc100,则p+1就是a的地址向高位移动一个步长(4个字节),那么p+1的地址就是0xabc104.
         又如
                 int arr[3] = {1,2,3,4};
                 int (*p)[3] = &arr;
                 这个指针是一个int数组类型的指针,p存储的是整个数组的地址(&arr),我们假设这个数组的地址是0xabc200,那么p+1的意思是这个数组的地址向高位移动一个步长,这个步长的长度为20个字节(既数组长度3  *   数组元素类型占用的字节4),则p+1的地址是0xabc212.
作者: lzfree    时间: 2015-8-10 22:05
why19910522 发表于 2015-8-10 21:59
这是指针的运算,代表指针p存储的地址向内存中的高位移动一个步长,而步长的长度与指针定义时的类型有关.如果 ...

是纯手打吗?最后出现笔误了哈哈
作者: 用晦而明    时间: 2015-8-21 13:29
明白了谢谢你
作者: 毛强    时间: 2015-8-21 20:54
楼上说的很棒
作者: DUKEMAN    时间: 2015-8-21 21:57
支持2楼,p是地址,*p是地址内存的值,p+1是间隔一个类型的地址,*(p+1)是p+1的地址内存的值,*p+1是p地址内存的值再加上1
作者: Jo_    时间: 2015-8-21 23:23
要看指针是什么类型的,才好判断p+1
作者: tangbinbin    时间: 2015-8-22 10:13
就是指向下一个地址,
作者: to_love    时间: 2015-8-22 12:57
学到了。
作者: leqoqo    时间: 2015-8-22 14:10
2楼说的很对
作者: 小笼包    时间: 2015-8-22 15:21
            又涨姿势了
作者: smilejoke    时间: 2015-8-22 15:39
每天进步一点点,总有一天成妖孽




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2