4221学习网
首页 | 网址大全 | 脑力倍增 | 电脑学院 | 学习方法 | 口才交际 | 英语学习 | 工作职场 | 成功励志 | 文学小说 | QQ·技巧 | 视频短片 | 视频教程 | NBA | 图片 | 游戏技巧 | 恋爱技巧 | 专题教程 | 4221论坛
热门关键字: 视频教程  美女  百家讲坛  记忆力  疯狂英语
 → 当前位置:4221学习网>电脑学院>编程开发>C语言>正文

浅议C语言中数组和指针的互操作

4221学习网 2007-06-08 来源:互联网 收藏本文

曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减。当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有必要知道其中的基本的数据结构的比如数组,稍微有点深度的堆栈、列表、结构体等的操作和实现。指针也是C语言中的一个很优秀灵活的结构,对它的了解也是必不可少的。
  我们一般都认为数组是一维的数据存储结构,因为二位数组或者说矩阵都可以看作是多个一维数组的组合结构,定义在其上的数据存储访问方式是一样的。所以一维数组是其中最基础的最重要的部分,只有理解了此类数据结构的本质才能触类旁通了。
  数组(array)是若干同类变量的聚合,允许通过统一的名字饮用其中的变量。所以数组也就是一个同一类型的数据的有限集合。可以通过下表来访问数组中的某一/些数组元素。在C语言中数组都由连续的内存区域构成(有时候,不一定是这样),最低地址对应首元素,数组的下标是从0开始的,所以首元素也就是数组下标为0的元素,最高的地址对应最末的元素,即第N-1个元素(如果我们定义的数组为N元)。
  数组的定义方式:
  在C语言中允许在声明数组的时候同时对其进行初始化,也可以把声明和定义放在不同的位置,初始化的一般的类似于如下的表达式:
  
  type_specifier array_name[size1]...[sizeN] = {value_list};
  其中vlaue_list是由逗号(,)分隔的常量表,常量表必须和type_specifier兼容。最后由分号与下一个语句分隔。由此可见一维数组的定义方式为:
  
  type_specifier array_name[size] = {value_list};
  如下:char hello[12] = {’H’,’e’,’l’,’l’,’o’,’,’,’ ’,’w’,’o’,’r’,’l’,’d’,’\0’};
  注意:字符数组是一"’\0’"收尾的,这是C标准的一部分。因为在操作字符数组的时候是以’\0’作为结束判断的标志。当然了,如果你定义的是一个字符串那就不用加这个’\0’了。因为有机制帮助你自动添加。上面的例子的串的生命方式为:string hello = "Hello, world";(当然了,具体的实现中你必须把"string.h"头文件加入到你的文件中),或者你也可以这样来声明:
  
  char *hello = "Hello, world";或者char hello[] = "Hello, world"; 切换为字符指针数组,其效果是一样的);数组初始化的时候还可 以不标明最大小,即
  char hello[] = {’H’,’e’,’l’,’l’,’o’,’,’,’ ’,’w’,’o’,’r’,’l’,’d’,’\0’};,这时候编译器会根据后边的赋值情况为数组分配合适的内存空间,这个你不用担忧,除非机器正处于内存缺状态。
  数组元素的访问:
  可以利用循环结构来挨个访问数组的元素,比如:
  
  [...]
  int i;
  char hello[12] = {’H’,’e’,’l’,’l’,’o’,’,’,’ ’,’w’,’o’,’r’,’l’,’d’,’\0’};
  [...]
  for(i = 0; i < 12; i++){
  
  printf("%c",hello[i]);
  }
  printf("\n");
  [...]
  其中有一点必须注意了,那就是i的值不能取到12,因为我们的下标识从0开始的,即hello[0]是第一个元素,数组的下界,而hello[12]是第一个空元素,数组的上界。其实,数组元素的个数等于定义时的下标,也等于数组的上界(12)减去下界(0)得到的数值,还等于上界地址减去下界地址模sizeof(tyep_specifier)的值(假设数组空间是连续分布的,如果不是这样那么这种方法也就不成立了)。

上一篇:《C语言程序设计》教学的几点体会   下一篇:在Visual C#.Net中使用CWGraph控件
添加到google书签 digg this! 添加到bolaa 添加到yahoo+ 添加到新浪vivi 添加到365key  
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭

相关文章
·《C语言程序设计》教学的几点体会
·在Visual C#.Net中使用CWGraph控件
·OpenGL编程轻松入门之背景简介
·switch语句的“不准遍历”
·Linux操作系统下C开发环境的构成与安装
·C语言程序静态库和动态库的创建及其应用
·链表的c语言实现(十)
·链表的c语言实现(九)
·链表的c语言实现(八)
·链表的c语言实现(七)
发表评论
要记得去论坛讨论,点击注册新会员) 密码: 匿名评论
评论内容:(请自觉遵守互联网相关政策法规。)
最新文章
·链表的c语言实现(一)
·单链表的c语言实现(1)
·链表的c语言实现(三)
·链表的c语言实现(四)
·链表的c语言实现(五)
·链表的c语言实现(六)
·链表的c语言实现(七)
·链表的c语言实现(八)
·链表的c语言实现(九)
·链表的c语言实现(十)
本类阅读排行榜
·链表的c语言实现(一)
·单链表的c语言实现(1)
·《C语言程序设计》教学的几点体会
·链表的c语言实现(三)
·OpenGL编程轻松入门之背景简介
·链表的c语言实现(六)
·在Visual C#.Net中使用CWGraph控件
·C语言程序静态库和动态库的创建及其应用
·链表的c语言实现(四)
·链表的c语言实现(十)
热点视频教程
视频街舞 舞步 教学
视频李孝利十分钟详细舞蹈教程
视频windowsxp重装系统视频教程
视频美女教你跳舞
视频街舞 舞步 教学2
视频韩国的太空步教程,后滑、侧滑、旋转太空
视频如何安装双操作系统
视频台球教程-基本杆法
视频双截棍视频教程-定式
视频【WindowsXP入门教程】 - 硬盘分区
视频启功书法视频
视频24式太极拳教学---基本动作
视频[百家讲坛]三十六计01_借刀杀人
视频 斯诺克台球竿法-后退球
视频超级全脑速读训练教程

设为首页 - 加入收藏 - 关于我们 - 联系我们 - 友情连接

4221学习网版权所有-鄂ICP备07006816号
已浏览: