c语言中指针数组有两个中括号是什么意思,p[i][i]是啥意思

如题所述

数组可以看作是一行连续的数据,只有一个下标,称为一维数组。在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以确定它在数组中的位置。本节只介绍二维数组,多维数组可由二维数组类推而得到。
二维数组的定义
二维数组定义的一般形式是:dataType arrayName[length1][length2];
其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。例如:int a[3][4];定义了一个3行4列的数组,共有3×4=12个元素,数组名为a,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]

在二维数组中,要定位一个元素,必须给出一维下标和二维下标,就像在一个平面中确定一个点,要知道x坐标和y坐标。例如,a[3][4] 表示a数组第3行第4列的元素。

二维数组在概念上是二维的,但在内存中地址是连续的,也就是说各个元素是相互挨着的。那么,如何在线性内存中存放二维数组呢?有两种方式:一种是按行排列, 即放完一行之后再放入第二行。另一种是按列排列, 即放完一列之后再放入第二列。追问

我问的是图片里的p[i][i]是什么意思,程序是可以输出的结果是26,但是我不知道是如何得到的p是一维的指针,为啥有两个下标!

追答

打了一长串,没提交成功,不想再打一次了。就简单的说吧。
前面定义的p是存储指针的一维数组。那么p[x]是一个指针(不妨认为p[x]是A,A是一个指针)
那么p[x][y]就是A[y],A[y]的值就是A指向的那个元素往下y个的元素的值。
跟详细的自行百度“数组与指针”。

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言中指针数组有两个中括号是什么意思,p[i][i]是啥意思
数组可以看作是一行连续的数据,只有一个下标,称为一维数组。在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以确定它在数组中的位置。本节只介绍二维数组,多维数组可由二维数组类推而得到。二维数组的定义 二维数组定义的一般形式是:dataType arrayName[l...

指针后面有中括号表示什么
ps[i] 里的中括号,C语言处理成运算符,ps[i] 等价于 *(ps+i),C语言里,指针和数组关系密切。*ps, 一旦有指向地址后,就可以看成 一维数组ps[], 哪种形式便于阅读理解,就可以用哪种形式。 ps[i] 等价于 *(ps+i)。

C语言中,指针*p[i]与p[i]有什么却别?分别代表什么意思?
p[i]:数组p的[i]这个地方放的值 p[i]:数组p的[i]这个地方放的值(这当做一个地址)的值,即p[i]这个地方放了一个地址(相当于另外一个p[i]),然后用*读取他所代表的值。---即我所说的:数组p的[i]这个地方放的值(当做一个地址)的值 ...

请教C语言指针中 &p[0] p+i *(p+i) p[i] 区别 一直感觉很迷茫_百度知 ...
p[i]就是数组中第i个元素。因为数组其实是用指针存放的,p就是第0个元素p[0]的地址(为了方便,我喜欢把第一个元素叫做第0个,因为它的下标是0,所以p【i】就是就是第i个元素的地址。

请教C语言指针中 &p[0] p+i *(p+i) p[i] 区别 一直感觉很迷茫_百度知 ...
C语言规定,对所定义的数组,数组名称等价于数组的首地址,即数组第一个元素的地址 & 是计算变量地址的运算符, * 是求出指定地址中的数据内容的运算符 所以,在定义了一维数组p的前提下,&p[0] 指的是数组第一个数组元素的地址,&p[0] 与 p 是等价的 p+i 是数组下标为i的数组元素的地址,...

C语言中两个*是什么意思?比如int**p
2 个*号,声明指向指针的指针。它的意思是“它是一个整数,这个整数指向某个内存地址,一次访问sizeof(int)长度,其值是一个整数,那个整数值指向某个内存地址,一次访问sizeof(BTree)长度。指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、...

C语言指针问题
p是指针数组,就是有两个指针 for(i=0;i<2;i++) p[i]=ch[i];这个就是赋值给p指针,其中p[0] 等于ch二维数组的第0行的首地址,p[1]等于ch二维数组的第1行的首地址 for(i=0;i<2;i++) \/\/循环p指针数组 for(j=0;p[i][j]>'\\0';j+=2) \/\/间隔j+=2循环p[i]指向...

C语言中指针 int *P;为什么还可以这样用?就是p[i],其中i是一个整型常...
简单说下,int *P这里只是声明一个指针P而已,你可以 比如有数组A,然后把指针P指向数组A(你可以理解为现在P就是数组A的快捷方式),那么 P[3]= A[3],P[2]=A[2],P[i]=A[i], 因为快捷方式嘛……

c语言中,数组的指针问题。
2 你的意思是说 p+i是第i行的首地址,然后取* ,就得到了内容, 是吧?p+i 是行地址,取* 就变成了列地址,所以它还是指向第i行的列地址,而a(也就是p),它是行地址,,只有对列地址取* 才会成为具体的元素值。例如*(*(p+i)+j) p是行地址,p+i还是行地址,取* 就变成了列...

c语言中p!=i是什么意思
p和i是指针,比较的是两个指针指向的位置,当二者指向不通位置时此条件为真 p和i是整形或者字符,比较的是两个变量的值,二者值不同时条件为真 当p和i分别表示数组时,此时p和i在表达式中都退化为数组首地址的指针,比较方式同指针 p和i表示浮点类型时,无法比较╮(╯_╰)╭ ...

相似回答