黑马程序员技术交流社区

标题: 指针的问题 [打印本页]

作者: chenzuliang1993    时间: 2015-4-6 22:47
标题: 指针的问题
*(p+1)和*p+1区别在哪

作者: oucding    时间: 2015-4-7 15:09
#include<stdio.h>

int main(){
   
    int array[4] = {7,15,3,9};
   
    int *p = array;
   
    printf("%d---%d\n", *p + 1, *(p + 1));
    return 0;
}
运行结果是8---15,你自己体会一下
作者: 开山斧    时间: 2015-4-7 16:40
*(p+1)和*p+1区别在哪
p 是一个指针,*p 表示访问指针 p 所指向的内存空间,所以 *p+1 表示指针 p 指向的内存空间的存储值再加上1,这个式子分两步,第一步访问指针 p 所指向的内存空间得出存储值,第二步 存储值加1。*(p+1) 也分两步,第一步 p+1表示指针变量 p 指向的地址空间往后面移一个单位(单位的大小根据指针类型而定,如64位系统中 int占4字节,char占1字节,那么 int * p 后移一个单位就是后移4字节,char * p后移一个单位就是后移一个字节)。第二步,*(p+1) 表示访问(p+1)所指向的空间。
作者: chenzuliang1993    时间: 2015-4-7 21:44
oucding 发表于 2015-4-7 15:09
#include

int main(){

额,明白了
作者: chenzuliang1993    时间: 2015-4-7 21:45
开山斧 发表于 2015-4-7 16:40
*(p+1)和*p+1区别在哪
p 是一个指针,*p 表示访问指针 p 所指向的内存空间,所以 *p+1 表示指针 p 指向的内 ...

分析很透彻:lol




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