[C++程序设计]多维数组元素的地址
设有一个二维数组a,它有3行4列。它的定义为
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,18,21,23}};
a是一个数组名。a数组包含3行,即3个元 素:a[0],a[1],a[2]。而每一元素又是一个一维数组, 它包含4个元素(即4个列元素),例如,a[0]所 代表的一维数组又包含4个元素: a[0][0], a[0][1], a[0][2], a[0][3],可以认为二维数组是 “数组的数组”,即数组a是由3个一维数组所组成的。
因此a代表的是首 行的起始地址(即第0行的起始地址,&a[0]),a+1代 表a[1]行的首地址,即&a[1]。
a[0],a[1],a[2]既然是一维数组名,而C++又规定了 数组名代表数组首元素地址,因此a[0]代表一维数 组a[0]中0列元素的地址,即&a[0][0]。a[1]的值是 &a[1][0],a[2]的值是&a[2][0]。
*(a[0]+1) 就是 a[0][1]元素的值。而a[0]又是和*(a+0)无条件等价 的,因此也可以用*(*(a+0)+1)表示a[0][1]元素的值。 依此类推,*(a[i]+j)或*(*(a+i)+j)是a[i][j]的值。
#include <iostream>
using namespace std; int main()
{
int a[][]={,,,,,,,,,,,};
int *p;
for(p = a[]; p < a[] + ; p++ )
{
cout << *p << " ";
}
cout << endl;
return ;
}
如果指针变量p先指向a[0](即p=&a[0]),则 p+1不是指向a[0][1],而是指向a[1],p的增值以一 维数组的长度为单位
[C++程序设计]多维数组元素的地址的更多相关文章
- PHP多维数组元素操作类
我的框架里面一个多维数组元素操作类,主要用于读取数组中配置数据,可以通过字符串节点的方式:a.b.c 来获取和设置元素,以及多维数组的覆盖,有需求的可以参考下吧! <?php /** * Cre ...
- C二维数组用指针地址遍历
#include <stdio.h> #include <stdlib.h> int main(){ int a = 100; void *p = &a; printf ...
- C++程序设计实践指导1.10二维数组元素换位改写要求实现
改写要求1:改写为以单链表和双向链表存储二维数组 改写要求2:添加函数SingleLinkProcess()实现互换单链表中最大结点和头结点位置,最小结点和尾结点位置 改写要求3:添加函数Double ...
- C/C++拾遗(一):关于数组的指针和数组元素首地址的一道经典题
代码例如以下: #include <stdio.h> int main(void) { int a[5] = {1, 2, 3, 4, 5}; int *ptr = (int *)(&am ...
- C++入门经典-例6.1-一维数组元素
1:代码如下: // 6.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...
- C++访问二维数组元素
if(*image_in+j*+xsize+i)>=thresh)//xsize图像宽度 image_out是首地址,加上j*行宽就是目标行的首地址,再加上i,就是在此行中的第i个像素,所以整个 ...
- 二维数组和指针(C语言)
二维数组和指针 二维数组和指针1.二维数组和数组元素的地址若有以下定义:int *p, a[3][4]; 1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的 ...
- C语言——二维数组
目录 二维数组 一.二维数组的定义 二.二维数组的初始化 三.通过赋初值定义二维数组的大小 四.二维数组与指针 二维数组 一.二维数组的定义 类型名 数组名[ 常量表达式1 ][ 常量表达式2 ] i ...
- C语言多维数组的地址
设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 它的定义为: int a[3][4]={{0,1,2,3},{4,5 ...
随机推荐
- python视频教程大全集下载
python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV Python从入门到精通视频(全60集)链接:http://pan.baidu.com/s/1e ...
- akoj-1140-英雄联盟阵营
英雄联盟阵营 Time Limit:1000MS Memory Limit:65536KTotal Submit:54 Accepted:16 Description 符文之地——瓦罗兰,作为最大的 ...
- Jasper_crosstab_columngroup header position config - (headerPosition="Stretch")
Position of Totals RowThe totalPosition attribute controls the appearance of the row that displays t ...
- SGU 294 He's Circles
题意:一个项链有n个珠子,每个珠子为黑色或白色.问有多少种不同的项链? 注意,n的数量十分大,因此,我们枚举i(1<=i<=n),令L=n/i,求出L的欧拉函数,则这些数和L互质,因此gc ...
- Pro Android 4 第六章 构建用户界面以及使用控件(一)
目前为止,我们已经介绍了android的基础内容,但是还没开始接触用户界面(UI).本章我们将开始探讨用户界面和控件.我们先讨论一下android中UI设计的一般原理,然后我们在介绍一下an ...
- 腾讯课堂-草图大师 Sketchup 初级到精通视频讲座
腾讯课堂-草图大师 Sketchup 初级到精通视频讲座 草图大师 Sketchup 初级到精通视频讲座
- RTP 协议
转载http://www.cnblogs.com/qingquan/archive/2011/07/28/2120440.html 概述: 实时传送协议(Real-time Transport Pro ...
- UDP通讯协议
常见的通讯协议有udp和tcp. 先来简单了解一下这两个协议各自的特点: UDP: --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠 ...
- OpenVPN莫名其妙断线的问题及其解决
1.问题 不得不说,这是一个OpenVPN的问题,该问题几乎每个使用OpenVPN的人都碰到过,也有很多人在网上发问,然而一直都没有人能给出解决办法,甚至很多帖子上表示因为这个问题而放弃了使用Open ...
- Timer.5 - Synchronising handlers in multithreaded programs
This tutorial demonstrates the use of the boost::asio::strand class to synchronise callback handlers ...