他本身还是二维数组,但可以将强制转换得到的指针当一维数组来处理。
比如:
#include "stdio.h"
int main()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=(int *)a;
int i;
for(i=0;i<12;i++)
printf("%d ",*(p+i));
printf("\n");
}
指针变量p就可以当成一维数组来处理,但a还是二维数组。
求问c语言大神: int a[3][4] 那么a,*a,&a是什么类型?有什么区别?
a是表示二维数组的首地址,其值相当于 &a[0][0] 本身是常量指针 不能改变其值。a是行的首地址 也就是&a[0] 如果你把(*a)+1 那么值就是 &a[1]&a值和a一样,但意义不同,a表示数组首地址,a+1就变成第二个元素地址(int 每个元素地址相隔4)&a表示整个数组,&a+1就直接...
c语言中,数组名的前面加*, 如a[3][4]; *a输出的是什么结果
由于a[3][4]是个二维数组,数组名是数组的首地址,也是一维a[3]的首地址,也是一维第一个元素a[0][0]的首地址,因此a a[0] a[0][0]三个的地址是相同的,那么*a在这里代表什么呢,*在这里代表的是取值符,而不是指针符号,由于a是个二维数组,*a代表的是取第一维的首元素,而这里...
c语言中inta[3][4]什么含义啊?
int a[3][4]={{3,4},{2,8,6}} 最终数组存储情况:数组的下标是从0开始的 所以a[2][0]=0
设有C语句int a[3][4];则每次移动过a数组一行元素的指针变量定义形式是...
设有C语句int a[3][4];则每次移动过a数组一行元素的指针变量定义形式是 a) int *p p的引用b) int **p p的引用的引用c) int (*p)[4] p的引用之后形成的数组是选C 因为 移动a数组一行,就是指: 二维数组 ,第一索引代表行,第二索引代表列int (*p)[4] : p的引用(索引...
int *a[3][4]是什么意思
int **a[3][4]是双指针类型的2维数组,int *a[3][4]是指针类型的2维数组,二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。
请教C语言
形参数组和实参数组之间并不是值传递,而是共用同一段地址,所以在函数调用过程中如果形参的值发生变化,则实参的值也跟着变化。 4)指向多维数组的指针和指针变量 以二维数组为居多。假设定义了一个二维数组a[3][4],那么 a代表整个二维数组的首地址,也代表第0行的首地址,同时也是第0行第0列的元素的首地址。a +...
C语言中,定义一个int a[3][4],如果定义一个指针指向这个数组呢
int a[3][4]的类型是int [3][4],你要定义一个指针指向它,那么首先它得是个指针,int*p,然后指向这个数组,不能写int*p[4]这样写的话p就是个指针数组了,因为p是变量,而[]的优先级要高于*,所以只能写作int(*p)[4];
C语言 main() {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p...
输出结果为60。简单说p和a是一个东西。也就是说把p换成a结果也是一样的。具体解释一下:二维数组的结构是这样的:a[3]这个第二维数组记录的是第一维数组的开始地址。即,a[0]的值和(&a[0][0])的值是一样的。a[1]的值和(&a[1][0])的值是一样的等等。因为a值赋给了p的原因,...
假如有二维数组定义为int a[3][4];且有p=a;则p+1表示的是什么?
在c语言中,数组名是数组首个元素的地址,即: a=a[0]。p=a,即p=a[0];所以:p+1=a[0]+1=a[1];
c语言的问题 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int (*...
int (*ptr)[3]=a这句,将a的首地址赋值给了ptr,ptr表示的是指向一个含有三个Int的数组的指针,((ptr+1)[2])等价于*((ptr+1)+2),等价于*(ptr+3),这表示从数组a的首地址向后移动3个单位,每个单位为一个含有3个Int的数组,所以一共向后移动了9个单位,即得出运行结果10!要想正确...