当前位置: 首页 > news >正文

购物网站开发目的个人网站建设规划实践报告

购物网站开发目的,个人网站建设规划实践报告,网红营销李佳琦案例分析,沈阳工伤保险做实在哪个网站文章目录 1. 指向多维数组的数组名2. 指向多维数组的指针3. 作为函数参数的多维数组 1. 指向多维数组的数组名 我们知道一维数组名的值是一个指针常量#xff0c;它的类型是“指向元素类型的指针”#xff0c;它指向数组的第1个元素。那么多维数组的数组名代表什么呢#x… 文章目录 1. 指向多维数组的数组名2. 指向多维数组的指针3. 作为函数参数的多维数组 1. 指向多维数组的数组名 我们知道一维数组名的值是一个指针常量它的类型是“指向元素类型的指针”它指向数组的第1个元素。那么多维数组的数组名代表什么呢 其实也差不多简单。唯一的区别是多维数组第1维的元素实际上是另一个数组。例如下面这个声明 int matrix[3][10];matrix数组可以看作是一个一维数组包含3个元素只是每个元素恰好是包含10个整型元素的数组。matrix这个名字的值是一个指向它第1个元素的指针所以matrix是一个指向一个包含10个整型元素的数组的指针。 那么下面各个表达式是什么意思呢如果你能正确说出来说明你对多维数组的数组名已经了如指掌了~ matrix 1 这也是一个“指向包含10个整型元素的数组的指针”但它指向matrix的另一行 为什么因为1这个值根据包含10个整型元素的数组的长度进行调整所以它指向matrix的下一行。 *(matrix 1) 如果对其执行间接访问操作就如下图随箭头选择中间这个子数组 事实上它标识了一个包含10个整型元素的子数组。数组名的值是个常量指针它指向数组的第1个元素在这个表达式中也是如此。它的类型是“指向整型的指针”。我们现在可以在下一维的上下文环境中显示它的值 注意间接访问后还是一个指针间接访问前是一个指向一维整型数组的指针间接访问后是一个指向整型的指针。 *( matrix 1 ) 5 前一个表达式是个指向整型值的指针所以5这个值根据整型的长度进行调整。整个表达式的结果是一个指针它指向的位置比原先那个表达式所指向的位置向后移动了5个整型元素。 *( *( matrix 1 ) 5 ) 对其执行间接访问操作它所访问的正是图中的那个整型元素。如果它作为右值使用你就取 得存储于那个位置的值。如果它作为左值使用这个位置将存储一个新值。 *( matrix[1] 5 ) 这个看上去吓人的表达式实际上正是我们的老朋友——下标。我们可以把子表达式matrix[1]改写为*(matrix 1)。 这个表达式是完全合法的。matrix[1]选定一个子数组所以它的类型是一个指向整型的指针。我们对这个指针加上5然后执行间接访问操作。 matrix[1][5] 这个就是我们最常见的表达形式了。用下标代替间接访问其含义和4、5一样。 2. 指向多维数组的指针 下面这些声明合法吗 int vector[10], *vp vector; int matrix[3][10], *mp matrix;1个声明是合法的。它为一个整型数组分配内存并把vp声明为一个指向整型的指针并把它初始化为指向vector数组的第1个元素。vector和vp具有相同的类型指向整型的指针。但是第2个声明是非法的。它正确地创建了matrix数组并把mp声明为一个指向整型的指针。但是 mp的初始化是不正确的因为matrix并不是一个指向整型的指针而是一个指向整型数组的指针。我们应该怎样声明一个指向整型数组的指针的呢 int (*p)[10];下标引用的优先级高于间接访问但由于括号的存在首先执行的还是间接访问。所以p是个指针但它指向什么呢接下来执行的是下标引用所以p指向某种类型的数组。这个声明表达式中并没有更多的操作符所以数组的每个元素都是整数。 我们对它执行间接访问操作时我们得到的是个数组对该数组进行下标引用操作得到的是一个整型值。所以p是一个指向整型数组的指针。 int (*p)[10] matrix;它使p指向matrix的第1行。p是一个指向拥有10个整型元素的数组的指针。当你把p与一个整数 相加时该整数值首先根据10个整型值的长度进行调整然后再执行加法。所以我们可以使用这个指针一行一行地在matrix中移动。 不要想当然地认为一维数组的数组名是int *二维数组是int **两者还是有明显差别的。 如果需要一个指针逐个访问整型元素而不是逐行在数组中移动应该怎么办呢下面两个声明都创建了一个简单的整型指针并以两种不同的方式进行初始化指向matrix的第1个整型元素。 int *pi matrix[0][0];int *pi matrix[0];增加这个指针的值使它指向下一个整型元素。 如果你打算在指针上执行任何指针运算应该避免这种类型的声明 int (*p)[] matrix;p仍然是一个指向整型数组的指针但数组的长度却不见了。当某个整数与这种类型的指针执行指针运算时它的值将根据空数组的长度进行调整也就是说与零相乘这很可能不是你所设想的。有些编译器可以捕捉到这类错误但有些编译器却不能。所以不要在一个指向未指定长度的数组的指针上执行指针运算。 3. 作为函数参数的多维数组 作为函数参数的多维数组名的传递方式和一维数组名相同——实际传递的是个指向数组第1个元素的指针。但是两者之间的区别在于多维数组的每个元素本身是另外一个数组编译器需要知道它的维数以便为函数形参的下标表达式进行求值。 一维数组 int vector[10]; ... func1(vector);参数vector的类型是指向整型的指针所以func1的原型可以是下面两种中的任何一种 void func1( int *vec ); void func1(int vec[] );作用于vec上面的指针运算把整型的长度作为它的调整因子。 多维数组 int matrix[3][10]; ... func2( matrix );参数matrix的类型是指向包含10个整型元素的数组的指针。func2的原型应该是怎样的呢 void func2( int (*mat)[10] ); void func2( int mat[][10] );在这个函数中mat的第1个下标根据包含10个元素的整型数组的长度进行调整接着第2个下标根据整型的长度进行调整这和原先的matrix数组一样。 这里的关键在于编译器必须知道第2个及以后各维的长度才能对各下标进行求值因此在原型中必须声明这些维的长度。第1维的长度并不需要因为在计算下标值时用不到它。 在编写一维数组形参的函数原型时你既可以把它写成数组的形式也可以把它写成指针的形式。但是对于多维数组只有第1维可以进行如此选择。尤其是把func2写成下面这样的原型是不正确的 void func2( int **mat );这个例子把mat声明为一个指向整型指针的指针它和指向整型数组的指针并不是一回事。 参考 《C和指针》
http://www.pierceye.com/news/576813/

相关文章:

  • 网站安全证书出错怎么做dw网页制作素材网站
  • 收录查询 站长工具给网站做解答是干嘛的
  • 成都哪些公司可以做网站建网站现软件
  • 深圳wap网站建设传奇霸主页游
  • 做网站首先要干什么营销软文200字
  • 帝国cms做的网站私人定制女装店
  • 网站建设南沙wordpress video
  • 网站建设开票应该开哪个行业什么网站可以免费做视频的软件
  • 百度seo查询收录查询网站推广策划案seo教程
  • 如何免费建立网站中贤建设集团网站
  • 如何做转运网站黄聪 wordpress
  • 临海市住房与城乡建设规划局网站宁波网络推广培训
  • go 网站开发自己在线制作logo
  • 重庆市网站建设公司企业服务账号
  • 网站建设的市场情况网站系统里不能打印
  • 网站如何适应屏幕做网站时无法上传图片
  • 网站的橱窗怎么做嘉兴住房和城乡建设厅网站
  • 吉林省城乡建设官方网站163企业邮箱登录入口官网
  • 做网站参考文献某企业网站建设方案2000字
  • 网站托管哪家好织梦购物网站整站源码
  • 怎么做网站的优化排名wordpress的目录结构(一)
  • 个人可以做公益网站吗美食杰网站的建设目的
  • 宿迁公司企业网站建设《网站基础建设-首保》
  • 做全屏式网站尺寸是多大国外虚拟主机 两个网站
  • 黑龙江建设网站招聘广西住房和城乡建设厅培训中心官方网站
  • 做网站客户最关心的是什么制作网页原型的目的
  • 电子商务网站建设工具河南安阳吧
  • 南通网站建设公司哪个好肯德基的网站建设
  • 高端大气网站源码wordpress做双语网站
  • 360网站推广东莞凤岗