188宝金博页面版

  • 图案背景
  • 纯色背景
视图
标记
批注
批注本地保存成功,开通会员云端永久保存 去开通
483xe

上传于:2015-04-11

粉丝量:1

该文档贡献者很忙,什么也没留下。


  • 相关
  • 目录
  • 笔记
  • 书签

188宝金博页面版:更多相关文档

  • C语言之指针、数组和函数费下载

    星级: 2 页

  • c语言函数指针和指针函数费下载

    星级: 4 页

  • c语言数组和指针的学习费下载

    星级: 18 页

  • C语言之指针、数组和函数[1]

    星级: 4 页

  • C语言之指针、数组和函数

    星级: 7 页

  • C语言之指针、数组和函数

    星级: 7 页

  • c语言之指针、数组和函数

    星级: 4 页

  • C语言数组指针和指向数组的指针变量—数组名作函数参数

    星级: 10 页

  • C语言数组指针和指向数组的指针变量—数组名作函数参数

    星级: 10 页

  • C语言数组指针和指向数组的指针变量—数组名作函数参数

    星级: 6 页

  • C语言数组指针和指向数组的指针变量—数组名作函数参数

    星级: 10 页

  • C语言数组指针和指向数组的指针变量数组名作函数参数

    星级: 6 页

  • c语言_指针_数组_函数_整理

    星级: 2 页

  • c语言函数,指针与数组

    星级: 131 页

  • 浅析C语言中指针与数组费下载

    星级: 6 页

暂无目录

点击鼠标右键菜单,创建目录

暂无笔记

选择文本,点击鼠标右键菜单,添加笔记

暂无书签

在左侧文档中,点击鼠标右键,添加书签

188宝金博页面版: 水滴石穿C语言之指针、数组和函数

下载积分: 1000

内容提示: 基本解释 1、 指针的本质是一个与地址相关的复合类型, 它的值是数据存放的位置(地址); 数组的本质则是一系列的变量。 2、 数组名对应着(而不是指向) 一块内存, 其地址与容量在生命期内保持不变, 只有数组的内容可以改变。 指针可以随时指向任意类型的内存块, 它的特征是“可变”, 所以我们常用指针来操作动态内存。 3、 当数组作为函数的参数进行传递时, 该数组自动退化为同类型的指针。 问题: 指针与数组 听说 char a[]与 char *a 是一致的, 是不是这样呢? 答案与分析: 指针和数组存在着一些本质的区别。 当然, 在某种情况下, 比如数组作为函数的参数进行...

文档格式:DOC | 页数:2 | 浏览次数:9 | 上传日期:2015-04-11 15:52:48 | 文档星级:
基本解释 1、 指针的本质是一个与地址相关的复合类型, 它的值是数据存放的位置(地址); 数组的本质则是一系列的变量。 2、 数组名对应着(而不是指向) 一块内存, 其地址与容量在生命期内保持不变, 只有数组的内容可以改变。 指针可以随时指向任意类型的内存块, 它的特征是“可变”, 所以我们常用指针来操作动态内存。 3、 当数组作为函数的参数进行传递时, 该数组自动退化为同类型的指针。 问题: 指针与数组 听说 char a[]与 char *a 是一致的, 是不是这样呢? 答案与分析: 指针和数组存在着一些本质的区别。 当然, 在某种情况下, 比如数组作为函数的参数进行传递时, 由于该数组自动退化为同类型的指针, 所以在函数内部, 作为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已, 在本质上, 两者是有区别的。 请看以下的例子: char a[] = Hi, pig!;char *p = Hi, pig!; 上述两个变量的内存布局分别如下: 数组 a 需要在内存中占用 8 个字节的空间, 这段内存区通过名字 a 来标志。 指针 p 则需要 4 个字节的空间来存放地址, 这 4 个字节用名字 p 来标志。其中存放的地址几乎可以指向任何地方, 也可以哪里都不指, 即空指针。 目前这个 p 指向某地连续的 8个字节, 即字符串“Hi, pig!”。 另外, 例如: 对于 a[2]和 p[2], 二者都返回字符‘i’, 但是编译器产生的执行代码却不一样。 对于 a[2], 执行代码是从 a 的位置开始, 向后移动 2 两个字节, 然后取出其中的字符。对于 p[2], 执行代码是从 p 的位置取出一个地址, 在其上加 2, 然后取出对应内存中的字符。 问题:数组指针 为什么在有些时候我们需要定义指向数组而不是指向数组元素的指针? 如何定义? 答案与分析: 使用指针, 目的是用来保存某个元素的地址, 从而来利用指针独有的优点, 那么在元素需要是数组的情况下, 就理所当然要用到指向数组的指针, 比如在高维需要动态生成情况下的多维数组。 定义例子如下: int (*pElement)[2]。 下面是一个例子: int array[2][3] = {{1, 2, 3}, {4, 5, 6}};int (*pa)[3]; //定义一个指向数组的指针 pa = &array[0]; // '&'符号能够体现 pa 的含义, 表示是指向数组的指针printf (%d, (*pa)[0]) ; //将打印 array[0][0], 即 1 pa ; // 猜一猜, 它指向谁? array[1]? 对了! printf (%d, (*pa)[0]); // 将打印 array[1][0], 即 4 上述这个例子充分说明了数组指针—一种指向整个数组的指针的定义和使用。 需要说明的是, 按照我们在第四篇讨论过的, 指针的步进是参照其所指对象的大小的,因此, pa 将整个向后移动一个数组的尺寸, 而不是仅仅向后移动一个数组元素的尺寸。 问题: 指针数组 有如下定义: struct UT_TEST_STRUCT *pTo[2][MAX_NUM]; 请分析这个定义的意义, 并尝试说明这样的定义可能有哪些好处? 答案与分析: 前面我们谈了数组指针, 现在又提到了指针数组, 两者形式很相似, 那么, 如何区分两者的定义呢? 分析如下: 数组指针是: 指向数组的指针, 比如 int (*pA)[5]。 指针数组是: 指针构成的数组, 比如 int *pA[5]。 至于上述指针数组的好处, 大致有如下两个很普遍的原因: a)、 各个指针内容可以按需要动态生成, 避免了空间浪费。 b)、各个指针呈数组形式排列, 索引起来非常方便。 在实际编程中, 选择使用指针数组大多都是想要获得如上两个好处。 [1]

188宝金博页面版:关注我们

  • 新浪微博

关注188宝金博页面版公众号

188宝金博页面版
阅读
APP
阅读
返回
顶部
188宝金博页面版官网登录在线平台入口(2026已更新)—江苏协昌电子科技股份有限公司