博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针数组、数组指针以及二维数组
阅读量:6120 次
发布时间:2019-06-21

本文共 668 字,大约阅读时间需要 2 分钟。

先看一道题:

1 #include 
2 3 void main() 4 { 5 int n[][3] = {
10,20,30,40,50,60}; 6 int (*p)[3]; 7 p=n; 8 cout << p[0][0] << "," << *(p[0]+1) << "," << (*p)[2] <

输出结果为:10,20,30

上题考察的数组指针和二维数组之间的关系,其中n是一个2*3的二维数组,p是一个数组指针,数组指针是一个指针,指向一个数组。这里的p在(*p)中,说明p是一个指针,指针的类型是int(*)[3],指针所指向的类型为int[3],所以指针p指向一个长度为3的数组。

一开始p指向n的第0行,因为第0行就是一个长度为3的数组。p[0]表示第0行的首地址(即&n[0][0]),p[0]+1表示第0行首地址偏移一个地址,即n[0][1]的地址(&n[0][1])。所以*(p[0]+1) 为n[0][1],答案是20。

p==&p[0],表示第0行(因为下标从0开始),所以*p == p[0],表示第0行的首地址,所以(*p)[2] 为p[0][2],即n[0][2],答案是30。

 

总结:

直接在p上移动就是移动行,在*p上移动就是移动列。比如:**(p+1)等于p[1][0],*(*p+1)等于p[0][1]。

未完待续~

 

转载于:https://www.cnblogs.com/bencai/p/8921631.html

你可能感兴趣的文章
jQuery的trigger和triggerHandler
查看>>
写可测试的代码
查看>>
XML学习(C#创建XML)[转自他人文章,仅做学习之用]
查看>>
[LeetCode] Two Sum II - Input array is sorted
查看>>
js数组去重三种方法
查看>>
洛谷4147:玉蟾宫——题解
查看>>
tomcat 调优
查看>>
快速部署Python应用:Nginx+uWSGI配置详解
查看>>
js操纵css样式
查看>>
[转] 理解CheckPoint及其在Tensorflow & Keras & Pytorch中的使用
查看>>
第一次作业-准备篇
查看>>
C#.NET的微信功能开发学习
查看>>
第2章 传统与敏捷方法论
查看>>
oracle的本地远程连接和配置
查看>>
jsp的内置对象
查看>>
memCached的配置文件 配置
查看>>
leetcode刷题第一天
查看>>
spring中bean标签factory-method和factory-bean)详解工厂方法(factory-method和factory-bean)
查看>>
set_uid set_gid stick_bit 软硬链接
查看>>
poi操作Excel的封装类
查看>>