C语言|C语言指针——你必须明白的几个指针!!!
今天来讲讲*p ,(*p)++,*p++,*(p++),++*p
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main(){
int arr[5] = { 1, 2, 3, 4, 5 };
int *p = arr;
printf("%d\n", *p);
printf("%d\n", *(p++));
printf("%d\n", *p++);
printf("%d\n", (*p)++);
printf("%d\n", ++*p);
return 0;
}
我们先了解一下优先级, tip1:*与++的优先级是相同的,他们的优先级都是自右向左 tip2:()的优先级比*与++高
优先级,结合性分析:
*p++由(tip1)知,p先与++结合,再与*结合,而是后置+,所以先用后加,先解引用p,打印这个数,然后指针+1
*(p++)由(tip2)知,(p++)先结合,再与*结合,还是后置加,所以先用后加,先解引用p,然后指针+1;
结论:*p++等价于*(p++)
变量分析:
*(p++):由(tip2)知道++和p结合,变量是p,p++,指针+1;
(*p)++ :括号的的优先级高,p先和*结合,得到*p,再++,*p是变量。
得出(*p)++:是对指针所指向数据进行+1操作
总结:本代码解释:
1,*(p++):取出*p所指向的数据之后,p++,指针+1;
2,*p++:同上
3,++*p:解引用p,找到p指向的值,再进行+1操作,对值+1
4,(*p)++:括号的优先级高,先和()结合,解引用p找到p指向的值,对值进行+1
1,printf("%d\n", *p);
第一个,arr的首地址放到了,指针变量p中,*p解引用,找到数组的第一个元素
2,printf("%d\n", *(p++));
(p++),先结合,因为是后置+,先用后加,解引用p之后,指针p+1;
3,printf("%d\n", *p++);
和第二个一样 ,右结合,先和++结合,因为是后置+,所以先用后加,解引用p后,指针+1;
4,printf("%d\n", ++(*p));
括号优先级高,(*p)先结合,解引用找到了,一个值,然后对值+1;
文章图片
5,printf("%d\n", ++*p);
*与++的优先级是一样的,结合性是从右向左,所以先解引用p,找到一个值,再对值+1;
文章图片
【C语言|C语言指针——你必须明白的几个指针!!!】 完结
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级