指针与数组运算
来源:互联网 发布:淘宝网书包双肩包女生 编辑:程序博客网 时间:2024/05/29 15:54
一维数组与指针
type a[N]];
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)[N] = &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][N];
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)[N] = 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)[N]; --> type a[N];
type *(*p)[N]; -->type * a[N];
指针数组
type *a[N];
sizeof(a)==> 4*N
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)[N] = &a;
数组指针与指针数组比较
type (*p)[N] PK type *a[N];
字符串与指针数组
多级指针
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个字节
type a[N]];
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)[N] = &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][N];
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)[N] = 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)[N]; --> type a[N];
type *(*p)[N]; -->type * a[N];
指针数组
type *a[N];
sizeof(a)==> 4*N
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)[N] = &a;
数组指针与指针数组比较
type (*p)[N] PK type *a[N];
字符串与指针数组
多级指针
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个字节
阅读全文
0 0
- 指针与数组运算
- 二维数组与指针运算
- 二维数组的运算与指针
- 3.6.数组、指针与sizeof( ) 运算符
- 指针、数组与sizeof运算符
- C语言学习篇-9指针运算、指针与数组
- C程序设计语言- 指针与数组-4.1----指针与地址、指针与函数参数、指针与数组、地址算术运算
- 指针、数组 运算。
- 大数运算 数组指针
- 指针运算遍历数组
- 指向指针的指针,指针的运算,指针与多维数组的关系
- C++ 指针与数组的关系及运算
- c语言二维数组的下标运算与指针偏移
- C/C++学习笔记19:指针运算与二维数组
- 10.13-3 指针与一维数组相关运算
- android ndk 02 C语言 二级指针 指针运算 指针与数组
- 指针:指针与数组
- 指针与指针数组
- 【Qt】Qt动态库和静态库的创建和使用
- 机器学习实战
- scratch入门
- 进程简介(笔记二)
- MyBatis数据库连接出现Communications link failure现象的解决办法(dbcp2连接池)
- 指针与数组运算
- CentOS下yum安装tomcat
- ubuntu14.04+k8s1.1+docker1.9集群部署
- 弱引用和软引用WeakReference,SoftReference,最简讲解,以及一个应用场景
- 堆排序的Java实现(用最大堆实现从小到大排序)
- php析构方法
- 上机练习题——接口
- HttpServletRequest.getInputStream可读取多次解决方案之一,使用HttpServletRequestWrapper
- Spring Boot集成JPA的Column注解命名字段无效的问题