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

作者&投稿:姓胥 (若有异议请与网页底部的电邮联系)
C语言中二维数组名能否直接赋给指针变量~

二维数组的指针与指针的指针是不一样的。
所以
int **ppr;
int fool[2][3];

ppr = fool;
这样是不行的。
二维数组的指针必须限定第一维的大小。
所以:
int (*ppr)[3];

ppr = fool;
这样才可以。

指向二维数组的
可以是一维指针, 可以是一维指针数组,可以是一维数组指针,也可以是二维数组指针。
其中, 一维指针数组,和一维数组指针这两个,是相当于二维指针, 但只是级别上相当,也不能完全等同。

不是

二级指针p也可以解释为指针的指针,即p内保存的值实际上还是一个指针,计算:
*p的值实际上是一个指针值,那么 *(*p)即二级指针指向的最终值

对于二维数组a[2][2],a也是一个地址,并且这个值也等于a[0],也等于a[0[0]的地址,即&a[0][0],由此看来对a取地址的值是一个变量值(不是指针),所以a并不是一个二级指针,最多算一个一级指针。

1、二维数组名不是二级指针,它只是一个比较特殊的常量指针。包括三维,四维,乃至N维数组也是如此。只要是数组,那么它就是一个普通的常量指针。
2、二级指针p也可以解释为指针的指针,即p内保存的值实际上还是一个指针,计算:
*p的值实际上是一个指针值,那么 *(*p)即二级指针指向的最终值。
对于二维数组a[2][2],a也是一个地址,并且这个值也等于a[0],也等于a[0[0]的地址,即&a[0][0],由此看来对a取地址的值是一个变量值(不是指针),所以a并不是一个二级指针,最多算一个一级指针。

应该不是的,简单来说,数组名,不管是多少维度的都是采用名称代码表相应的存放地址。虽然二重指针也是存放数据的地址但是其是间接的存放。就打个比方,二重指针就如一个厂家有好多货要卖出去。而自己又没有销售渠道,只好通过代理商来提货,通过分销商来卖给消费者;二维数组就如厂家有货而且自己有渠道直接销往消费者。 不知这样说是否容易理解。


C语言中“二维数组行指针”是什么意思?
数组名就是一个指针常量,它代表数组元素在内存相关信息。1、C语言 是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。2、C语言的发明 20世纪60年代,美国AT&T公司贝尔实验室(AT&T Bell ...

C语言中p=(int*)nums是什么意思???其中nums为一个二维数组名。
LZ你好 这个涉及到指针的问题 nums作为一个数组名,同时也可以表示一个指针,指向的是nums[ ][ ]数组的首地址 你应该知道 (int)var 是把var转换成int类型吧 int*则是整数类型的指针,(int*)就是和LS所说一样,强制转换nums为int*类型赋值给p 如果还不明白,建议读一读有关指针方面的内容 ...

c语言中中括号表示什么意思?
int a[6];就是定义一个一维数组,这个数组名叫做 a ,共有6个元素;同理int b[6][6];就是定义一个二维数组,这个数组共有6*6个元素。定义之后,就可以引用该数组的元素,但不能直接用 a[6] ,a此时包含的元素只有a[0],a[1],a[2],a[3],a[4],a[5]这6个。C语言支持定义一系列相同...

C语言中二维数组为什么要进行两层解引用才能求出值
二维数组的数组名可以看做是指向指针的指针,所以取得二维数组的某个值,需要两次解引用。

C语言数组问题?
你说的二维数组,要用weekday[i][j]来表示Sunday、Monday……到Saturday之间的每一天的星期名称。因为在c语言中,变量没有字符串类型,想存放一个字符串,就要用到一维字符数组。所以,有时候也把一维字符数组变量看成“字符串变量”。如声明char a[10];,则程序中可以用a(不带后面的中括号)指代a[...

在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?
c语言中long占4个字节,所以longa[3][5]占4*3*5=60个字节 从元素角度理解a代表a[0][0];从二维数组理解a代表a二维数组名,即二维数组首地址;从一维数组角度理解a代表a[0]即二维数组第一行看作一个一维数组,a[0]为这个一维数组的首地址;a[1]从二维数组看代表a[1][0]是元素,从一维...

请阐述,ABB工业机器人一维数组,二维数组,和三维数组的定义?
ABB工业机器人使用RAPID编程语言。在RAPID中,可以定义和使用一维、二维和三维数组。以下是如何定义这些数组的简短示例:1.一维数组:```rapids VARnumarraymyArray[5]:=[1,2,3,4,5];```这定义了一个名为`myArray`的数组,它有5个元素并初始化为[1,2,3,4,5]。2.二维数组:```rapids VARnum...

C语言中char[][5]={"abcd"}究竟是一维数组还是二维数组?
从概念上讲是二维的,二维数组才有行列概念,而且二维数组是按行存储的,也可以将二维数组理解为是有行数个一维数组组成,如a[0][8],可以理解为是有一行的二维数组,数组名为a,只不过个只有一行,也可以理解为是一维的,数组名为a[0]。如果非要选择,便是二维的 ...

c语言二维数组名代表首地址吗
严格意义讲首地址是数组的第一个元素的地址。在C中如果不指定元素,则默认数据名是首地址。

...c语言程序设计。顺便解答一下对于二维数组,数组名跟着一个中括号,表...
这里用到的是数组指针 二维数组为x[N][M]每行M个元素 定义指向这个数组的数组指针就需要 char (*ss)[M];调用后 x和ss等效 循环按行循环 所以第二个空是N 数组名跟着一个中括号 对于二维数组来说, 是对应行的首地址。 比如 x[1]就是第二行的首地址 ...

湖里区15979189740: C语言二维数组与指针 -
丁媛美立: B答案是正确的,因为二维数组名相当于二级指针,用二级指针(w)来表示元素的必须有两个(*)号:A *(*w+3) ()的优先级高于*,所以*w是列指针(一级指针) (*w+3)是列上加3,也就是移到第三列 *(*w+3...

湖里区15979189740: 二维数组名是不是一个“指针”? -
丁媛美立: 1,无论是一维,二维或N维数组,数组名就是一个指针常量,它代表数组元素在内存中的首地址.2,二维数组名不占存储空间的,如1,数组名只是一个指针常量,打个比方,你的名字指向你这个人,但是你的名字就是人吗?显然不是.数组...

湖里区15979189740: C语言中二维数组名是不是可以看作指针数组名? -
丁媛美立: 例如: 二维数组名是一个指针,但是说它是常量的意思是它本身不可更改:如你定义int a[34][3],a确实是个指针,*a指向数组中第一个整数;但是你不能通过a++操作使在此操作后a指向数组中第二个整数,而普通指针(int a[12];int *b=a;b 就是普通指针)可以这么操作的,所以说它是“指针常量”;

湖里区15979189740: 请问C语言中**a[9]是什么意思呢? -
丁媛美立: "**应该表示2维指针" -- 不叫二维指针,而叫二重指针,就是指针的指针.**a[9] -- 这是一个 二重指针数组.数组有9个单元,可以指向9个 二重指针.用它来表示一个三维数组,比较复杂,在作为三维数组使用前,须要分配它的存储单元,看...

湖里区15979189740: C语言二维数组
丁媛美立:二重指针,首先你要有数组的概念,数组就是一片连续的存储地址,一维的情形用一个指针来实现对数组中数据的引用.如 int a[10];这句话实际是在内存中申请了10个连续的地址块,每块地址可以用来存储一个int型数据.而a就是用来引用数...

湖里区15979189740: C语言里指向二维数组的指针是不是相当于一个二维指针? -
丁媛美立: 指向二维数组的 可以是一维指针, 可以是一维指针数组,可以是一维数组指针,也可以是二维数组指针. 其中, 一维指针数组,和一维数组指针这两个,是相当于二维指针, 但只是级别上相当,也不能完全等同.

湖里区15979189740: 关于二维数组名和指针的问题? -
丁媛美立: 你要想直接把一个二维数组名赋给一个指针,这个指针必须是行指针或二级指针才可以,因为在C编程系统中,对于二维数组会看成数组元素为一维数组的一维数组,即对于二维数组aa[2][3],系统会看成aa[0]和aa[1],而aa[0]和aa[1]中分别包含三个元素,这就是系统对于二维数组的处理.所以你直接把二维数组名赋给一个普通的指针变量,这个指针是指向元素aa[0]的,但实际上呢,aa[0]不是一个具体的元素,而是元素aa[0][0]的地址,所以只有把数组名赋给二级指针它才指向一个具体的元素.二维数组名不能说是二级指针,不能按指针的思路来理解二维数组,要按一维数组的思路来理解,即按照系统的理解方式会简单些.

湖里区15979189740: c语言二维数组编程 -
丁媛美立: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28#include<stdio.h> #include<string.h> intmain() {chara[3][100];inti,j,n;for(i=0;i<3;i++)gets(a[i]);for(i=0;i<3;i++){n=strlen(a[i]);printf("字符串长度为:%d\n",n);...

湖里区15979189740: C语言问题求解如图谢谢二维数组意思是 -
丁媛美立: 定义int型数组,默认会填充0,就是说,a[0][3]和a[1][3]值为零.但是int型数组,同一数组元素中,是不会有两个数字的,所以a[0][2]是1715,a[1][2]是1816,都是一个数字.之前写的有点跑偏,编辑了下.

湖里区15979189740: c语言中如何通过二级指针来操作二维数组 -
丁媛美立: 1、首先我们打开电脑里的C语言软件,新建一个工程和.c文件,输入头文件和主函数. 2、然后我们输入图示代码初始化数组,定义变量类型. 3、然后我们输入图示代码用for语句实现数组的访问. 4、然后我们输入图示代码进行输出. 5、然后我们输入图示代码编译、运行,即可通过二级指针来操作二维数组.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网