77问答网
所有问题
已经定义一个一维数组a[4];&a表示一个二维数组吗?&a+1表示a[1][0]吗?
如题所述
举报该问题
其他回答
第1个回答 2020-08-15
1
&a不会表示2维数组,他是对a数组的首地址取地址值,这个时候&a就是数组a的首地址
2
&a+1
表示的是一个地址,哪个地址呢,从数组a的首地址便宜
sizeof(a)大小个字节的地址,在这里偏移的是
sizeof(a)
=
16;
3
一维数组和二维数组在内存中都是连续的内存,没有什么不同,所以维度只是人为的区分。
第2个回答 2020-05-27
&a的类型是int
(*)[4]
并不能说&a表示一个严格意义上的二维数组
或者你可以把他想成一个“每一行”只有一个元素的二位数组
&a+1是a[1][0]的地址值
相似回答
在指针中,先
定义
int a[3
][4]
,则
a+1
和
&a[1]表示
行地址吧,a[1],*(a+...
答:
a表示
第一个班长,那么
a+1
就表示了第二个班长,也就是属排长管的范围,属行地址。a[1],取行地址所指向的值了,就地址降级,也就是降到班长所管的范围,也就表示具体的
a[1][0]
的地址了,然后再
&a[1]
,又地址升级,就变成排长管的范围,也就变成行地址,也就表示第1行的地址。(a+1):首先a...
定义
了
二维数组a[
3
][4]
,那么
a+1
,*(a+1),*
a[1]
,*(a
[0]
+1)各代表什么意思...
答:
因为a是T
[4]
类型,所以a[1]得到的是int型的值,对其取下标是非法的。所以a[1][0]是一个非法的表达式。咳咳以下都是废话。。怎么跑题了。。。既然打出来就懒得删了 至于
&a[1][0]
,编译器解释为&((a[1])[0]),同样非法。
C语言中,a是
一个
三维
数组
,那么
a+1
是什么意思?
答:
C语言中,a是一个三维数组,那么
a+1
是,这个三维数组中的第二个二维数组。这就好比用
一个二维数组
来
表示一
张表格。那么这个三维数组就由若干张表格组成,a+1就表示其中的第二张表格。
...3
] [ 4 ]
这样的
二维数组
,书上说
&a [
i ] 和
a+
i等
答:
a[0]是 int *类型 a 是 int(*)
[4]
类型。
&a[
0
][0]
得到的是int *类型,这里&的作用是取地址 而在
二维数组
里对&a[0] 得到是 int(*)[4],这里的&不是对地址取地址,而是更多的是类型转换。因为通过执行下面的程序会发现,a[0], a, &a[0][0], &a[0]的地址都一样的:inclu...
请问C语言中如何把
一个二维数组
用
一维数组表示
出来?
答:
定义a[
]
[4]
为一个4列的
二维数组
后,a[2]是*(a+2),这里a是一个指向4个整型的数组指针
;a[
2]也可以理解为
&a[
2][0],因为
数组a
其实只定义了一行,所以&a[2
][0]已经
越界了,不过在c语言中越界访问是不会报错的,所以a[2][0]的地址比a[0][0]的地址偏移了2行,也就是8个整型,...
c语言中,例如
一个二维数组a[
3
][4]
,则a与
a[0]
代表的意思一样
吗?
a与*...
答:
因为第一个例子是整数类型,每
一个a[
x][x]代表确切的值。a就是a[0
][0]
,a[0]其实也是a[0][0],所以是相等的。再说第二个例子:定义个字符串数组,其中每个字符串最多有10个字符(说道这里应该明白为什么是错的了吧?),你定义的char *p只是一个单字符指针,却企图将str代表的整条字符串的...
...下面这段解释中“*(
a+1
)
表示
的是
数组a[1]
中第
一个
元素的地址”是不...
答:
他没错,你也没说错,但你理解不到位。(
a+1
)是数组元素。但a是
二维数组
,那你就要再进一步理解了。因为a是二维数组名,即是
一维数组a[
0] 、a[1] 、a[2] 的首地址。a+1就是 a[1]的地址。是取指针的值。那么*(a+1)就是取 a[1]的值。它是什么呢?它又是一个数组:
a[1][0]
,...
大家正在搜
定义一个一维数组a有10个元素
定义一个长度为10的一维数组a
对一维数组a的正确定义是
以下对一维整型数组a的正确定义是
下列能正确定义一维数组a的语句是
以下对二维数组a的正确定义是
一维数组的定义
一维数组a
一维数组a的正确说明