c语言中定义int a[10][10]a是什么类型

时间:2022-07-10 02:10:22 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
C语言中定义int a[10][10]a是什么类型?



1.

a不是指针,a是数组,c 语言里的数组,它是一个二维数组,它和c 语言的基本数据类型不一样,属于构造类型如果是指针,sizeof(a)的值就是4了,可惜不是. sizeof(a)的值是这个类型大小,可以写代码打印出来这个值看看,一目了然数组名可以给指针复制,是因为c 语言为了提高访数组问效率,做了这种处理,尤其在把数组名当做实参传入函数的时候,这种方式十分有用,同时也导致初学者容易将指针和数组混淆起来

2.int输入法表示的数据类型是整形。int a 表示a这个变量是整型,只能存放整数。int a1010】指的是代表a二维数组,是指向一个有十个元素的数组的指针,或者说a是具有十个元素的数组的首元素的地址,这十个元素,每个元素都是一个数组。简略的说,A就是整型二维组3.1.C语言的定义中,二维数组可以看作一个一维数组,每个元素还是一个一维数组。int a[m][n];表示一个包含m个元素的一维数组,每个元素是一个包含n个整型数据的一维数组。(参K&R C 第二版 5.7 Multi-dimensional Arrays2.C


言中,指针和数组有相似之处,但是两者本质不同。两者相似的地方有两点:读取数组元素函数传递

就二维数组来说,“相似”的指针应该指向和二维数组的子数组相同的数据类型,int (*p)[n] = a;此时可以用a[i][j]p[i][j]*(p+i)[j]*(a+i)[j]来获取相同的数据。在声明一个接受一个二维数组的函数原型时,会忽略第一层数组的长度,等效的是上述指针类型的参数。即下面两种函数原型的声明都可以成功接受a做参数:void f1(int a[][n]);void f2(int (*a)[n]);(K&R C 5.3 5.4 5.73.而数组的本质并不是指针类型,虽C语言在实现上很多时候两者表现可以相同,但是数组的标志符(如a)是不能作为指针用的。你不能将a“指向”另一个数组,或者说不能向数组赋值,或者说数组除了初始化的时候,不能作为左值:int b[m][n]; a = b; /* 这是错的*/a = {... ...}; /* 也是错的 */同样上述的指针p也不能作数组用,因为指针的初始化只会申请指针本身的空间:int (*p)[m] = {... ...}; /* 也是错的 */最后,可以学习《你必须知道的495C语言问题》6 “数组和指针”里边的问题,或许有你遇到的问题。

4.,是指向二維數組(Array)的指針(Pointer)沒錯假設要取irow,jcolumn的值, 0可以這樣取值int


b=*(*(a+i)+j); 當然也可以用一般Array表示法取值int b=a[i][j]; 一般是用來存取矩陣(Matrix),做矩陣運算時最常使用二維,但如果是稀疏矩陣(Sparse Matrix),即有使用的index很少,則以Linked List實現較佳5.int a,则aint类型int【】 a,则aint【】类型int【】【】a,则aint【】【】类型

6.就是一个地址,是一个常量不可修改,是一个包含10个元素的数组的首地址,注意是元素不是int每个元素都是一个包含10int的数组,用指针来理解的话就是一个指针数组的首地址


本文来源:https://www.wddqw.com/doc/8c1ea4d0b8d528ea81c758f5f61fb7360b4c2bf8.html