发布网友 发布时间:2022-05-13 10:57
共3个回答
热心网友 时间:2023-09-04 00:10
由于a[3][4]是个二维数组,数组名是数组的首地址,也是一维a[3]的首地址,也是一维第一个元素a[0][0]的首地址,因此a a[0] a[0][0]三个的地址是相同的,那么*a在这里代表什么呢,*在这里代表的是取值符,而不是指针符号,由于a是个二维数组,*a代表的是取第一维的首元素,而这里一维里的元素本身又是一个一维数组,因此在a的第一维中是存放着三个一维元素的首地址,显然*a取到的就是第一维里第一个元素的首地址了,*(a+1)就是取到第一维里第二个元素的首地址了,你可以建一个一维数组int arr[] = {1,2,3}测试一下,在一维数组中,*arr代表的就是取第一个元素的值,它的值是个int型数值,也就是第1个元素1,而二维数组中的a[3]里存放的是三个元素(3个一维数组)的首地址,因此得出一个结论,二维数组里的第一维就是一个指针数组,每个指针指向三个元素(3个一维数组)的首地址。从而**a就是取第一维里第一个元素(1维数组)里的第1个元素的值。热心网友 时间:2023-09-04 00:11
在 C 语言中,数组和指针是可以互相交换的。热心网友 时间:2023-09-04 00:11
*a是指的数组的第一列。追问*不是指针的意思么,为什么可以用在数组追答是指针啊。*a指的是数组的第一列数据的地址。如a[0],a[1],a[2]。
*a[0]则是指从a[0][0],递增输出就把第一列的数据输出来了。
同理,可以把其他数据输出来。