在c语言的指针运算中*(p+1)与p+1有什么区别 p是指针

2024-11-25 07:54:17
推荐回答(5个)
回答1:

一、指代不同

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,就是将要指向的地址。

参考资料来源:百度百科-指针变量

参考资料来源:百度百科-指针

回答2:

*(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](&为取地址运算符)

 

回答3:

p+1是指p指针加1即p的下一个指针,*(p+1)是指p+1所指向的对象

回答4:

举个例子吧 比如a[5]={2,4,6,8,1O};*(p+1)指的是a[1]即4,而*p+1指a[O]加1即3

回答5:

当然有区别 指向指针的指针*(p+1) p+1就p的下一个指针