懒得再写一遍了,凑活着看吧
指针是什么:指针也就是内存地址,指针变量是用来存放内存地址的变量
符号 * 和 & 在c语言中的用法
指针在数组
如: int a[5]; 那么,a就是一度个指针,它指向数组的第一个元素。反过来,每一个指针都可以当做一个数组来用。如: char p=“0123”; 那么,编译器会分知配5字节存储字符串“0123”,而p则指向第一个字符’0’。所以,p==‘0’,(p+3)==‘3’。
其实,你完全可以不用运算符,由“等道价”可知:p[0]‘0’,p[3]‘3’
----------- * 与 ++
++ * p,* ++p,*p++,(*p)++
首先我们看一下c运算符的优先级,从表中我们可知优先级:++(后缀)大于 * 等于++(前缀),所以前两个我们直接从右往左结合就行,而后面两个我们把他们等价的看为 *(p++) 和(*p)++,现在思路是不是一下就清楚了
int a[5] ={1,2,3};
int *p;
p = a;
p指向数组,现指向1的地址 | * 翻译成中文为解引用 |
---|---|
++ * p | 先取*p =1,然后取到的值自加得到2 |
* ++p | ++p指针自加,p指向2的地址,解引用得到2 |
* p++ | 等价于* (p++),p++指向下一个地址,但解引用的是++之前的地址,所以得到1 |
(* p)++ | 先取*p =1,后自加得到1(后++特性) |
-----------* p()和(* p)()
指针函数和函数指针。
第一个为指针函数,返回值为指针。
第二个为函数指针,指针指向函数。这东西有点离谱,也没啥用,大概知道就行