#include<cstdio>
#include <iostream>
using namespace std;
int main()
{
int num[3][4] = {{1,2,3,4},{2,3,4,5},{3,4,5,6}};
int (*p)[4] = num;
/*for(p=num;p!=num+3;p++)
{
for(int *q=*p;q!=*p+4;q++)
cout<<*q<<" ";
cout<<endl;
}*/
for(p=num;p!=num+3;p++)
cout<<p<<" "<<*p<<endl;
}
当然,这样也可以
#include <iostream>
using namespace std;
int main()
{
int num[2][3] = {1,2,3,4,5,6};
int *p = num[0];
for(;p<num[0]+6;p++)
cout<<*p<<endl;
}
理解&num [0]+1(行级别) 和num[0]+1的区别
#include <iostream>
using namespace std;
int main()
{
int num[2][3] = {1,2,3,4,5,6};
int *p = num[0];
for(;p<num[0]+6;p++)
cout<<*p<<endl;
cout<<endl;
cout<<**(&num[0]+1)<<endl;
cout<<*(num[0]+1)<<endl;
}
(*p)[4] 和 *p[4]的区别
(*p)[4]是定义一个指向一维数组的指针,这个一维数组有4个元素;而*p[4]是定义了一个包含四个指针元素的指针数组。用sizeof()计算两个p,发现第一个p的大小是4,也即它是一个指针,第二个p的大小是16,因为它是一个包含4个指针的数组。
分享到:
相关推荐
数组的指针和指向数组的指针变量 数组的指针和指向数组的指针变量是编程语言中一个重要的概念。数组的指针是指向数组在内存中的起始地址,而指向数组的指针变量是指向数组元素的指针变量。 概念: * 数组的指针:...
因此,对于二维数组,我们可以获得其首元素的一维数组指针,这是一维数组指针的指针,也称为二级指针。 二维数组的声明通常如下所示: ```cpp int arr[3][4]; ``` 这个声明创建了一个3行4列的二维数组。数组`arr`...
例如,在二维数组中,如果定义了一个指向一维数组的指针,则可以认为这是一个数组指针,它可以指向二维数组中的每一行。 - 使用示例:`int (*ptr)[N];` 其中 `N` 表示数组的大小,`ptr` 是指向长度为 `N` 的整型...
因此,当我们传递一个二维数组的名称给函数时,实际上是传递了一个指向该数组第一行首元素的一维指针。下面是一个简单的示例: ```cpp // 定义函数,通过指针接收二维数组 void sum2DArray(int (*arr)[3][3], int ...
而“指向二维数组元素的指针”是C++高级概念之一,涉及到指针和多维数组的结合,这对于理解和操作复杂的数据结构至关重要。下面将详细阐述这个主题。 首先,二维数组在内存中是连续存储的,每一行的元素也是连续...
对于二维数组,我们可以获取指向数组第一行的指针,即`int (*ptr)[4] = arr;`这里的`ptr`是一个指向4个整数数组的指针,可以用来遍历整个二维数组。通过指针,我们能以更灵活的方式操作数组,例如传递数组给函数。 ...
对于二维数组,我们有两层指针:一层是指向数组的指针,另一层是数组中的元素指针。 二维数组的基本结构是这样的: ```cpp int arr[行数][列数]; ``` 例如,一个3x4的二维数组可以这样定义: ```cpp int arr[3]...
### 二维数组、二级指针及数组指针详解 #### 一、基本概念与定义 在计算机编程领域,特别是C语言中,二维数组、二级指针(也称为指针到指针)以及数组指针是重要的概念。这些概念在处理多维数据结构时尤为关键。 ...
而指向二维数组的指针则提供了一种灵活的方式来操作和处理这些数据。本话题将深入探讨如何定义、初始化以及使用指向二维数组具体值的指针。 一、二维数组的定义与初始化 二维数组本质上是一组一维数组的集合,可以...
对于二维数组,我们不能直接动态分配一个完整的二维数组,但可以创建一个指向一维数组的指针数组。以下是一个简单的示例: ```c++ int **create2DArray(int rows, int cols) { int **arr = new int*[rows]; // ...
C语言中二维数组作为函数参数来传递有三种方法:形参给出第二维的长度、形参声明为指向数组的指针、形参声明为指针的指针。每种方法都有其特点和应用场景,我们需要根据具体情况选择合适的方法。
本文将深入探讨“指向二维数组元素的指针”,并详细解析相关知识点。 首先,我们要理解二维数组的基本概念。二维数组实际上是一组一维数组的集合,每个一维数组称为一个行,这些行构成了一个矩阵。例如,一个大小为...
1130指向二维数组的指针.exe
二维数组的指针指向二维数组的存储地址。在内存中,二维数组的存储地址与一维数组的存储地址相似,都具有元素地址和行首地址。 二、理解行首地址和元素地址 在二维数组中,每个元素都有一个存储地址(称为元素地址...
二维数组在C++中本质上是一级指针的数组,每个元素又是一个一级指针,指向一维字符数组。因此,二级指针可以用来直接访问和修改这些一维数组的内容。下面将详细解释这个过程: 1. **二级指针的声明**: 在C++中,...
在C++中,二维数组名本质上是一个指向数组第一行(即第一个一维数组)起始位置的指针。这意味着: - `arr` 和 `arr + 0` 是相等的,都表示数组的第一行的地址,其类型为`int (*)[4]`,即指向包含4个整型元素的数组...
元素的值可以通过`*(*(a+i)+j)`获取,因为它指向二维数组的第i行第j列的元素。 在编程实践中,我们可以通过指针变量来操作二维数组。例如,声明一个指针变量`p`,类型定义为`int (*p)[4]`,表示`p`是一个指针,它...
这里,p2 是一个数组指针,指向一个包含 10 个 int 的数组。 二、内存布局 在 32 位系统下,数组指针永远占 4 个字节,而指针数组的大小取决于数组的大小。例如,int *p1[10];这里,p1 占用 40 个字节,因为每个...
二维数组和指针有着紧密的关系,指针可以用来指向二维数组的元素,例如:int *p = a[0];、int *p = a[i] + j;等。此外,指针数组也可以用来存储二维数组的元素,例如:int *p[4] = {a[0], a[1], a[2], a[3]}; 在...