9.13学习记录《C与指针读后感二》

本文详细探讨了C语言中数组和指针的关系,特别是多维数组的存储方式和指针的使用。强调了一维数组名作为指针常量的特性,解释了如何声明和初始化指向数组的指针。同时,提到了二维数组的行主序存储方式,以及在函数参数传递中数组名相当于指针的行为。最后,讨论了指针数组的应用,如存储字符串列表。
摘要由CSDN通过智能技术生成

  接着昨天的继续讲多维数组,一维数组名的值是一个指针常量,它的类型是“指向元素类型的指针”,它指向数组的第一个元素。多维数组也差不多简单。唯一的区别是多维数组第1维的元素实际上是另一个数组。例如下面这个声明;

int  matrix[3][10];

创建了matrix,它可以看做是一个一维数组,包含3个元素,只是每个元素恰好是10个整型元素的数组。matrix这个名字的值是一个指向它第一个元素的指针,所以matrix是一个指向一个包含10个整型元素的数组的指针。

  指向数组的指针:

  下面这些声明合法吗?

 int  vector[10],*vp = vector;

 int matrix[3][10], *mp = matrix;

第一个声明时合法的,它为一个整型数组分配内存,并且把vp声明称一个指向整型的指针,并把它初始化为指向vector数组的第一个元素。vector和vp具有相同的类型:指向整型的指针。但是,第二个声明时非法的。它正确地创建了martix数组,并把mp声明为一个指向整型的指针。但是mp的初始化不正确,因为matrix并不是一个指向整型的指针,而是一个指向整型数组的指针。我们应该怎样声明一个指向整型数组的指针呢?
int  (*p)[10]

这个声明比我们以前见过的所有声明都复杂,但他事实上并不是很难。你只要假设它是一个表达式并对它求值。下标引用的优先级高于间接访问,但由于括号的存在,首先执行的还是间接访问。所以,p是个指针,但它指向什么呢?

声明并没有直接告诉你p是什么,但推断他的类型并不困难——当我们对它执行间接访问操作时,我们得到的是个数组,是该数组进行下标引用操作得到的一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值