二级指针与二维数组(Visual C++中二级指针的定义,初始化,赋值问题)

:暂无数据 2026-09-07 04:00:07 :1

二级指针与二维数组(Visual C++中二级指针的定义,初始化,赋值问题)

其实二级指针与二维数组的问题并不复杂,但是又很多的朋友都不太了解Visual C++中二级指针的定义,初始化,赋值问题,因此呢,今天小编就来为大家分享二级指针与二维数组的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

Visual C++中二级指针的定义,初始化,赋值问题

二级指针和二维数组并不等价。
二级指针是一个指向指针的指针
而二维数组其实就是一个指针,char a,并不是char **;
所以不能直接:t=a;
要这样:t = (char **)a;
以下转帖:
今日在论坛上看到有人问到指针的问题,我想通过这样的例子来阐述几个常见的错误,并加深对二
级指针和二维数组之间关系的理解.
我们知道char array=”abcdef”; array是数组的首地址,
那么在二维数组中array当然也是数组的首地址,
看看这个定义char Array ={“ab“,“cd“,“ef“};
怎么知道的呢?定义这样一个数组,在vc调试窗口中
我们看到:
Array ---------0x64324234
|------Array---0x64324234 “ab“
|------Array---0x64324337 “cd“
|------Array---0x6432433A “ef”
已经很明白了,实际编译器是这样实现二维数组的,实际上Array是“一维指针数组“的首地址,其中每一个元素指针都对应一个字符串,那么好我们来看看是否可以这样来使用Array二维数组.
char **pArray = Array;编译器提示出错,怎么办呢?加个(char **)试试,仍然出错,设断看一下pArray的值和Array的值是相等的,但我们是否可以象使用Array那样来同样输出字符串呢?很明显是不行的,编译器不会把pArray+i处理成pArray+i*3寻找到第i个指针的地址,而只是简单的加了一个i.这说明编译器只做了很简单的将地址值赋给了pArray,而它实际没有任何意义.我们不能用它来访问任何数据.很奇怪吗?
再来看看这样定义char *p来访问字符串了呢,的确编译器在编译的时候识别出了sp是一个指向一维数组的指针的指针,那么我们就可以把它做为数组名来操纵整个数组了,c神奇的地方或者说精华的地方就在这里了,希望这篇文章对那些对指针或二级指针有疑惑的朋友能够有所帮助,这也是我blog里的第一篇文章,呵呵.

二维数组名有什么用,它和二级指针有什么关系

二维数组名即数组地址,指向首行地址,不是指针的指针。
表面上看,行地址即一维数组指针,而数组名指向行就应该是指针的指针。
但是你考虑过没有,如果a,假设int **p=a; 那么要对行递增执行p++时,编译器如何知道列宽?因为int **是指指向一个 int *类型的指针,其数据宽度是4字节,内置宽度,因此p将指向下一个整数元素地址,也就是p递增了4字节,而不是10个int型数据的宽度,这就错位了。
所以a,而不是int **。
所以应该这样
int (*p)=a;
其含义为,p是一个指向(含10个int类型元素的一维数组或行的)指针,其实本质上任何指针都是4字节(32位系统),你完全可以将一种指针类型强制转为任何其他类型,那为什么还要区分指针类型,就是为了指针运算时实现数据对齐,准确定位。

c++中怎么通过指向二维数组的指针给二维数组赋值

一、二维数组与二级指针

  1. 二维数组

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。二维数组的相当于由若干个一维数组组成的一级数组。

int a;

此时的a是一个二维数组,a)组成的一维数组。

int a={{0,1,2,3},{4,5,6,7},{8,9,10,11}}
设数组a的首地址为1000,各下标变量的首地址及其值如图所示。

无论是一维数组还是二维数组,数组名均表示数组的首地址。

2. 二级指针

指向指针的指针称为二级指针,即二级指针不是指向一个普通变量,而是指向一个指针。如int **p,*p并不表示一个变量的值,而是另一个指针。

二、二级指针指向二维数组

int a;

此时的a即是一个二级指针,*a指向二维数组的首地址(也是a。

三、应用举例

#include 《stdio.h》
void main()
{
int a = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};
for(int i=0; i《3; i++)
{
for(int j=0; j《4; j++)
{
printf("%4d", *(*(a + i) + j));
}
printf("\n");
}
}

四、运行测试

   0   1  2  3
   4  5  6   7
   8   9  10  11

C语言中的二维数组名是一个二重指针吗

不是
二级指针p也可以解释为指针的指针,即p内保存的值实际上还是一个指针,计算:
*p的值实际上是一个指针值,那么 *(*p)即二级指针指向的最终值
对于二维数组a,由此看来对a取地址的值是一个变量值(不是指针),所以a并不是一个二级指针,最多算一个一级指针。

c语言中如何通过二级指针来操作二维数组

1、首先我们打开电脑里的C语言软件,新建一个工程和.c文件,输入头文件和主函数。

2、然后我们输入图示代码初始化数组,定义变量类型。

3、然后我们输入图示代码用for语句实现数组的访问。

4、然后我们输入图示代码进行输出。

5、然后我们输入图示代码编译、运行,即可通过二级指针来操作二维数组。

c++二维数组和二级指针

类型不匹配,a 不是 int ** 类型的 ,虽然一维数组的数组名是一个指针 ,但是二维数组却不同 ,因为它所指向的东西是有大小的 ,举例来说 ,你这个 a 他是 int 类型的 , 编译器需要知道要操作的单元的大小,就是说如果你用 p++; 的话编译器要能知道移动多少个字节,所以说可以改为:
int (*p) = a ;
这样的话 p 所指向的每个数据单元大小便明确了

二维数组名为什么不能直接赋值给二级指针

二维数组名相当于指针,但是它是一个指向数组类型(也就是整型或者字符型,具体取决于你数组的定义)。而二级指针在真正意义上也是一个指针,但它是一个指向指针的指针。
在寻址时,拿整型数组举例,直接引用数组名,系统会在数组名指向的地址往后寻址2个字节得到一个整型数字。而引用二级指针时,系统会在指针指向的地址后寻址4个字节得到一个地址,所以两个不能相互赋值。
纯手打,求采纳啊。

请问二级指针,二维数组,数组指针的区别

//解答如下
二级指针:指向指针的指针,它存放的是一级指针的地址。
int *p;
int **q;
q = &p;  //把一级指针p的地址赋值给二级指针q。
二维数组:
int arr;  //定义了一个4行5列的数组
数组指针:指向数组的指针。
int arr;
int (*p);  //指针p是指向数组的指针,你可以理解为指针p是二维数组的行指针。
p=arr;
还有一种就是指针数组,即数组元素都是指针变量
int *p;
int **q;
q=p; //二级指针q指向了指针数组p的首元素,它的首元素是指针p。

关于二级指针遍历二维数组,我这样做问题在哪里

二维数组是由一维数组组成的数组。它的每个元素都是一个一维数组。因此指向二维数组的指针应该是一个数组指针,数组长度等于每个一维数组的长度。
char (*p1)=board;

关于二级指针与二维数组和Visual C++中二级指针的定义,初始化,赋值问题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

二级指针与二维数组(Visual C++中二级指针的定义,初始化,赋值问题)

本文编辑:admin

更多文章:


怎么做网站网页归档(网页应该怎么做网页设计有哪些要求)

怎么做网站网页归档(网页应该怎么做网页设计有哪些要求)

大家好,怎么做网站网页归档相信很多的网友都不是很明白,包括网页应该怎么做网页设计有哪些要求也是一样,不过没有关系,接下来就来为大家分享关于怎么做网站网页归档和网页应该怎么做网页设计有哪些要求的一些知识点,大家可以关注收藏,免得下次来找不到哦

2026年10月11日 05:30

跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意

跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意

本篇文章给大家谈谈二郎腿贴地,以及跷二郎腿太低好吗对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 05:10

易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)

易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)

本篇文章给大家谈谈易语言点击js按钮,以及易语言网页填表怎样点击链接为“javascript:void(0)“的按钮对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要

2026年10月11日 03:00

regards(Regards,什么意思)

regards(Regards,什么意思)

其实regards的问题并不复杂,但是又很多的朋友都不太了解Regards,什么意思,因此呢,今天小编就来为大家分享regards的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 01:10

dom4j文档(如何去掉用dom4j生成的XML文档中的)

dom4j文档(如何去掉用dom4j生成的XML文档中的)

其实dom4j文档的问题并不复杂,但是又很多的朋友都不太了解如何去掉用dom4j生成的XML文档中的,因此呢,今天小编就来为大家分享dom4j文档的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 01:00

compare with造句(用compared with和compared to造句)

compare with造句(用compared with和compared to造句)

“compare with造句”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看compare with造句(用compared with和compared to造句)!

2026年10月10日 23:30

xshell软件(Xshell怎么更改字体大小)

xshell软件(Xshell怎么更改字体大小)

各位老铁们好,相信很多人对xshell软件都不是特别的了解,因此呢,今天就来为大家分享下关于xshell软件以及Xshell怎么更改字体大小的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月10日 22:50

tensorflow与keras对应版本(为什么tensorflow2.8没有keras)

tensorflow与keras对应版本(为什么tensorflow2.8没有keras)

各位老铁们好,相信很多人对tensorflow与keras对应版本都不是特别的了解,因此呢,今天就来为大家分享下关于tensorflow与keras对应版本以及为什么tensorflow2.8没有keras的问题知识,还望可以帮助大家,解决

2026年10月10日 22:10

个人网站首页界面(深圳社会保险服务个人网页主页)

个人网站首页界面(深圳社会保险服务个人网页主页)

“个人网站首页界面”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看个人网站首页界面(深圳社会保险服务个人网页主页)!

2026年10月10日 22:00

maven仓库jar网站(如何在maven仓库中添加jar包)

maven仓库jar网站(如何在maven仓库中添加jar包)

这篇文章给大家聊聊关于maven仓库jar网站,以及如何在maven仓库中添加jar包对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月10日 19:50

最近更新

hp421笔记本usb启动(HP笔记本421-LJ745PA 如何设置BIOS设置USB-CDROM启动HP新BIOS)
2026-10-11 11:20:04 浏览:0
热门文章

by网站域名444(444ppp现在是什么域名)
2026-08-19 20:20:31 浏览:13
韩国大片视频mv(韩国20个感人mv)
2026-07-11 13:10:02 浏览:12
标签列表