一、指代不同
1、*(p+1):表示具体的数值。
2、p+1:表示内存地址。
二、指向的值不同
1、*(p+1):指针p所指向的内存地址单元的下一个内存地址单元中的值。
2、p+1:指针p所指向的内存地址的下一个内存地址。
三、内存表示不同
1、*(p+1):*的优先级比+的优先级高,所以*P+1在编译器中是先取出p指向的int值然后加1。
2、p+1:直接将内存中指向的地址加1,就是将要指向的地址。
参考资料来源:百度百科-指针变量
参考资料来源:百度百科-指针
*(p+1)表示具体的数值,指针p所指向的内存地址单元的下一个内存地址单元中的值;
p+1 表示地址,指针p所指向的内存地址的下一个内存地址。
可以通过下面的实例来理解*(p+1)与p+1之间的区别:
int *p; // 定义一个int类型的指针p
int a[3]={1,2,3}; // 定义一个int类型的数组a,并进行初始化
p = a; // 使指针p指向数组a的首地址
printf("%d", *(p+1)); // 输出2,等价于a[1]
printf("%x", p+1); // 以16进制形式输出a[1]的地址(如08ff12),等价于&a[1](&为取地址运算符)
p+1是指p指针加1即p的下一个指针,*(p+1)是指p+1所指向的对象
举个例子吧 比如a[5]={2,4,6,8,1O};*(p+1)指的是a[1]即4,而*p+1指a[O]加1即3
当然有区别 指向指针的指针*(p+1) p+1就p的下一个指针