浅议C语言中数组和指针的互操作
2008-02-23 05:33:21来源:互联网 阅读 ()
我们一般都认为数组是一维的数据存储结构,因为二位数组或说矩阵都能够看作是多个一维数组的组合结构,定义在其上的数据存储访问方式是相同的。所以一维数组是其中最基础的最重要的部分,只有理解了此类数据结构的本质才能触类旁通了。
数组(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)的值(假设数组空间是连续分布的,假如不是这样那么这种方法也就不成立了)。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 设计OutLook风格的工具栏
下一篇: C语言如何进行取整
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash