指针与数组总结
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 );
函数与指针
函数与数组
/* ******************************************************************* */
一维数组与指针
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 );
函数与指针
函数与数组
/* ******************************************************************* */
相关文章推荐
- 数组和指针的可交换性总结
- C语言数组与指针总结
- C语言 总结数组指针相关知识点
- C++字符数组、字符指针、strlen、sizeof总结
- 第四章 数组和指针(part5) 总结 & 常用术语
- C++ 数组和指针学习总结
- C++中一维数组与指针的关系详细总结
- c/c++ 字符数组、字符指针和字符串类型总结帖
- 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组
- C++的数组、结构体、指针三种复合类型知识点小总结
- C/C++(字符串处理)字符指针、字符数组用法大总结
- 字符数组,字符指针,字符串常量以及其sizeof的一些总结
- 关于指针数组与数组指针的总结
- 指针,数组,变量参数传递的一点总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- c语言字符串与数组还有指针的总结(1)
- 指针数组、数组指针、函数指针、指针函数总结
- 深入理解C指针与数组-总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 对指针、数组的总结