C语言-行指针、列指针和数组元素的转化公式

肌肉诗男  肌肉诗男     2022-02-17      0

首页 > 时尚

​​C语言-行指针、列指针和数组元素的转化公式

①引子

众所周知

一维数组中

元素*p=p[0]

地址p=&p[0]

二维数组中

列指针是数组元素的地址

行指针是列指针的‘地址’

(但不是单纯的取址)

行指针→列指针→元素

②加*

int**(指向指针的指针)→int*(指针)→ int(变量)

行指针→列指针→元素

是逐渐‘加*’的过程,

列指针→元素,加*

行指针→列指针,加*加列

(不是单纯加*)

~

行指针p

列指针*p+j

元素*(*p+j)=*(p[0]+j)=*(p+0)[j]=p[0][j]

~

行指针p+i

列指针*(p+i)+j

元素*(*(p+i)+j)=*(p[i]+j)=*(p+i)[j]=p[i][j]

③加&

int(变量)→int*(指针)→int**(指向指针的指针)

元素→列指针→行指针

是逐渐‘加&’的过程,即‘减*’

&和*可以相互抵消。

元素→列指针,加&

列指针→行指针,加&减列

(不是单纯加&)

行指针作为数组名是不能继续取址的,

即没有int***

元素*(*p+j)=*(p[0]+j)=*(p+0)[j]=p[0][j]

列指针*p+j=p[0]+j=(p+0)[j]=&p[0][j]

行指针p=&(p[0]+j)=&(p+0)[j]=&&p[0][j]

元素*(*(p+i)+j)=*(p[i]+j)=*(p+i)[j]=p[i][j]

列指针*(p+i)+j=p[i]+j=(p+i)[j]=&p[i][j]

行指针p+i=&(p[i]+j)=&(p+i)[j]=&&p[i][j]

~

就这么简单,

你学会了吗?​​​​


郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如信息有误,请联系我们修改或删除。