指针数组指向二维数组(c++如何用指针指向二维数组)
本文目录
c++如何用指针指向二维数组
不能用二维指针指向二维数组,指向二维数组的指针最后一维必须是确定的。
int
a={1,2,3,4,2,3,4,5,3,4,5,6,4,5,6,7};
int
(*s);
//表明s指向一个n*4的数组
s=a;
还有一种方法是将二维数组看成是一维数组(因为数组在内存中连续存储)
int
a={1,2,3,4,2,3,4,5,3,4,5,6,4,5,6,7};
int
*s;
s=&a;
这样可以用s;
c语言如何让指针数组指向二维数组
指针数组相当于是一组指针,而二维数组的定位理论上也就是只需要一个首地址的指针就行了啊,不需要那么多的,因为给定的数组其数据类型确定,而且数组分配地址连续,只要知道二维两个下标就能够计算出来的。
普通的指针变量可以指向二维数组吗
可以
C中没有真正意义上的二维数组,是通过一维数组扩展实现的,数组的每一项再存放指向一维数组的手指针。例如:
int a;
int (*p)
p=a
最终存储的二维数组将会全部展开成一维数组,所以你直接申明int *p 指向该二维数组,那么这里的p即为a
这里的p即为a,则会不够存储A中数组第二维度的长度,就会出错。
指针数组可以表示二位数组吗
不可以
一维数组可以和一维指针等效 而二维数组是不能直接传二维指针的
因为 在访问二维指针时 比如 int **p
要访问p 时
实际是先找到*(p+1) 取值,再把这个作为地址 来取*(*(p+1)+1)的
而在二维数组中,并没有这样一个空间 来存每一行的地址。
要传二维数组参数 需要使用数组指针 即
int (*p)这样的形式。
指向二维数组的指针
int(*p)。
注意,这里是a数组是5行10列的,放入(*p)。
最后(*p)中的值只有五行被初始化为a数组的值了。
在本例中,p和p则指向a的首行首地址(继续往下看...)。
p的地址。如果你仔细验证程序的输出结果,就会发现:
#include《stdio.h》
#include "iostream"
using std::cout;
using std::endl;
using std::hex;
void main()
{
int a={1,2};
int (*p)=a;
cout《《p《《endl;
cout《《p《《endl;
cout《《p《《endl;
}
输出结果为(不同机器结果不同):
0012FEB8
0012FEB8
00130020
如果验证它们这些地址存储的值会发现:
#include《stdio.h》
#include "iostream"
using std::cout;
using std::endl;
using std::hex;
void main()
{
int a={1,2};
int (*p)=a;
cout《《*p《《endl;
cout《《(*p)《《endl;
cout《《(*p)《《endl;
}
输出结果为:
0012FEB8
1
0
这是p和p。那如何通过p取得首元素的值呢,很显然,应该再加一个*操作符,如下:
cout《《**p《《endl;
这时输出结果自然就会和(*p)一样是1了。
扩展资料
设p是指向二维数组a的指针变量,则有:
int* p=a。
如果定义int (*p1);
则p+j将指向a。
由于a,指针的一般形式如下:
p+i*N+j
相应的如果用p1来表示,则为*(p1+i)+j
元素a相应的指针表示为:
*( p+i*N+j)
相应的如果用p1来表示,则为*(*(p1+i)+j)
同样,a也可使用指针下标法表示,如下:
p
例如:
int a={{10,20,30,40,},{50,60,70,80},{90,91,92,93}};
则数组a有3个元素,分别为a。
若有:
int *p=a;
则数组a的元素a对应的指针为:p+1*4+2
元素a也就可以表示为:*( p+1*4+2)
用下标表示法,a
如何指针指向一个二维数组
用指向数组的指针吧,还要看二维数组的具体情况。你这里如果要指向b,那那就声明一个int (*p)=b;就可以了。
更多文章:
linux系统编程实战刷题(想在LINUX下学习C语言,该如何开始)
2026年4月12日 22:00
库里单突布里奇斯(布里奇斯和库里分别当选首周东西部最佳球员,他们在首周的战绩如何)
2026年4月12日 21:40
c语言struct头文件(c语言中,struct怎么用是什么意思)
2026年4月12日 21:20
phpsession实现购物车原理(购物车用session怎么实现的)
2026年4月12日 21:00
适合30岁短期培训班(30岁没学历从零开始学什么技术有前途)
2026年4月12日 20:00
distribution是什么意思中文(distribution什么意思及同义词)
2026年4月12日 19:20
java常量表达式(java switch语句case后常量表达式是个范围怎么办)
2026年4月12日 19:00





