指针与多维数组.docxVIP

  • 9
  • 0
  • 约小于1千字
  • 约 1页
  • 2023-04-30 发布于上海
  • 举报
指针与多维数组 对于C 语言的初学者来说,很容易混淆二维数组与指针数组之间的区别,比如上面例子中的name。假如有下面两个定义: int a[10][20]; int *b[10]; 那么,从语法角度讲,a[3][4]和b[3][4]都是对一个int 对象的合法引用。但a 是一个 真正的二维数组,它分配了200 个int 类型长度的存储空间,并且通过常规的矩阵下标计算 公式20×row+col(其中,row表示行,col表示列)计算得到元素a[row][col]的位置。但是, 对b来说,该定义仅仅分配了10 个指针,并且没有对它们初始化,它们的初始化必须以显式 的方式进行,比如静态初始化或通过代码初始化。假定b的每个元素都指向一个具有20 个元 素的数组,那么编译器就要为它分配200 个int类型长度的存储空间以及10 个指针的存储空 间。指针数组的一个重要优点在于,数组的每一行长度可以不同,也就是说,b的每个元素不 必都指向一个具有20个元素的向量,某些元素可以指向具有2个元素的向量,某些元素可以指向具有50个元素的向量,而某些元素可以不指向任何向量。 尽管我们在上面的讨论中都是借助于整型进行讨论,但到目前为止,指针数组最频繁的 用处是存放具有不同长度的字符串,比如函数month_name中的情况。结合下面的声明和图形化描述,我们可以做一个比较。下面是指针数组的声明

文档评论(0)

1亿VIP精品文档

相关文档