C语言 > 数组和指针

C语言 数组和指针

const:

关于指针和const需要注意一些规则。首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的。

然而,只能把非const数据的地址赋给普通指针。(即const的值不能赋给普通指针);

 

指针和多维数组:

zippo == &zippo[0];

zippo+2 == &zippo[2];

*(zippo+2) == &zippo[2][0];

*(zippo+2) + 1 == &zippo[2][1];

*(*(zippo+2) + 1) == zippo[2][1];

 

指向多维数组的指针:

Int (* pz)[2];  >> pz指向一个内含两个int类型的数组;

(如: zippo[4][2];)

Int * pax[2];  >> pax 是一个内含两个指针元素的数组 , 每个元素都指向int的指针;

(差不多和数组的意思一样,就是声明了两个指针,一个是pax[0],另一个是pax[1])

(如pax [0] = zippo; pax[1] = zippp;  >> *pax[0] == *pax[1];)

数组变量是const的指针 , 所以不能被赋值 :

int a[] <==> int * const a =….

数组变量本身表达地址 , 所以 :

int a[10]; int * p = a; // 无需用 & 取地址

但是数组的单元表达是变量 , 需要用 & 取地址

a == &a[0]

[ ] 运算符可以对数组做 , 也可以对指针做 :

p[0] <==> a[0];

* 运算符可以对指针做 , 也可以对数组做 :

*a = 25;

原文地址:https://www.cnblogs.com/cccj/p/7724982.html