指针*p和p究竟怎么用

img

  • *p是指针指向的内容
  • p是指针变量(所以这个p就是变量地址吗)
    reverse函数将要逆序的数组首地址和末地址传过去,用指针接收,可是我不知道具体什么时候用*pstr。
  1. 这个函数是定义了一个char tmp,将*pstr的内容赋给tmp
  2. *pstr=*pend 进行收尾字符交换
  3. 但为什么这时候是pstr++,而不是(*pstr)++

img

这里求字符串长度时,while判断条件写的是*plen++,为什么不是plen++

  • 这里的plen++,是先plen++再plen吗,也就是说plen的地址往后跳一个char,再读取指针所指向的内容?最后读到一个\0就跳出,此时*plen再读取指针所在的地址吗?

  • 然后最后return的是末尾地址-首地址-1得到字符串长度

所以什么时候用*p什么时候用p啊

int *p是定义了一个整型指针,*号就是一个标识符,表示这个p是指针型的;
p是指针型变量,则它就可以存储一个内存地址,如int a = 5;p=&a;取了a的内存中的地址存放到p中,此时可能p=000012348f,但是用指针引用标识符*,又可以查看这块地址中存放的数据,输出*p 结果是 5

你可以把int p写成int p,即一个地址为int型的变量,变量名字是p,*p就是取用这个地址里面存放的东西,p就是这个地址值