您的位置:首页 > 其它

指针与数组总结

2017-05-09 19:27 141 查看
总结:
一维数组与指针
type  a
];
sizeof(a[0])==> 
sizeof(a)==> N*type 
sizeof(&a)==> 4
a[0]+1==>值加1
&a[0]+1 ==>加一个元素
a+1 ==> 加一个元素,+type 
&a+1 ==> 加一个数组
type *p = a;
sizeof(p)==>   4
sizeof(*p)==>  type 
sizeof(&p)==>  4
p+1     ==>指向元素,加元素长度
*p+1    ==>取值  +1,值加1
&p+1    ==>+4,指向p后面空间
取值:a[i] == p[i] == *(p+i);

type (*p)
= &a;
sizeof(p)==> 4  数组的地址
sizeof(&p)==> 4  p本身的地址

p+1==> p存放一维数组地址,+1加一个一维数组长度,加一行, type*N 
&p+1==> &p是p本身的地址,本身4个字节,指向p后面空间
*p+1 ==> a+1 加一个元素
取值:a[i] = *(a+i) = *(*(p)+i) = (*p)[i] 

二维数组与指针
type a[M]
;
 sizeof:
sizeof(a[0][0]) ==>type
sizeof(a[0])   ==> N*type 
sizeof(a)  ===>M*N*type 
sizeof(&a[0][0]) ==>4
sizeof(&a[0])  ==> 4
sizeof(&a)   ==> 4
 +1:
a[0][0]+1 ==> 值加1 。 
a[0]+1==> 存放元素地址,加一个元素长度 ,列地址 type 同&a[0][0]+1 
a+1   ==> 存放一维数组地址,加一维数组长度,行地址, type*N  &a[0]+1 
&a[0][0] + 1  元素地址
&a[0] + 1     一维数组地址
&a + 1        二维数组地址

 取值:a[i][j]==
*(a[i]+j)=*(*(a+i)+j)
 指针:
type *p = a[0]; // = &a[0][0]
sizeof()
+1 
取值:a[i][j] = *(p+i*N+j) = p[i*N+j];

数组指针:
type (*p)
= a;//=&a[0];
sizeof(p)==> 4   存放一维数组地址的指针
sizeof(&p)==> 4  p本身的地址

p+1==> p存放一维数组地址,+1加一个一维数组长度,加一行, type*N 
&p+1==>  &p是p本身的地址,本身4个字节,指向p后面空间
*p+1 ==> p存放数组地址,*p得到数组名,*p+1,加一个元素. 
对行地址取值得到列地址,列地址+1加一个元素
取值:a[i][j]
== p[i][j] = *(p[i]+j) = *(*(p+i)+j);
a是行地址常量,存放一维数组的地址,同时代表整个数组M*N*type个字节。
p是行地址变量,存放一维数组的地址,代表本身4个字节.

数组指针
type (*p)
;  --> type  a
;

type *(*p)
; -->type * a
;

指针数组
type *a
;
sizeof(a)==> 4*N

ae4e
sizeof(a[0])==> 4 
sizeof(&a)==>  4
sizeof(&a[0])==>  4 
a[0] + 1  ==>   元素值加1,元素值是type型地址,指向一个type型数据,+1加一个数据长度,即type长度
a+1 ==>   加一个数组元素的长度,+4
&a+1 ==>  一维数组地址,+1加一个一维数组长度, 4*N 
取值: a[i] = *(a+i);
*a[i] = *(*(a+i));

type *(*p)
= &a;

数组指针与指针数组比较
type (*p)
  PK     type  *a
;

字符串与指针数组

多级指针
type  a;
type  *p = &a;
sizeof(p) ==> 4 
&p+1 ==> +4 
p+1 ==> +type 

type **pp = &p;
sizeof(pp)==>4
sizeof(*pp) ==> 4 
sizeof(&pp) ==>4 
pp+1 ==> +4
一级指针+1加的是目标类型长度,+1增加type长度
二级指针+1加的也是目标类型长度,二级目标是一个指针,+1增加4个字节

2.1指针与字符串题 http://note.youdao.com/noteshare?id=d39d0b93fb98eccc3feb7f9e84999ea8
/* ***********************************************************************/

函数:
函数定义:
函数声明:
函数调用:
函数传参:
值传递
址传递
函数返回值:
返回和传参取数据。
嵌套与递归函数:

指针函数:
int fun(int x, char y);
int *fun(int x, char y);
char *fun(int x, char y);

函数指针:
int  fun(int x, char y); 
int  fun1(int a, char b);

int (*p)(int , char );

函数与指针
函数与数组

/* ******************************************************************* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: