Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192073
  • 博文数量: 40
  • 博客积分: 2265
  • 博客等级: 大尉
  • 技术积分: 434
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-23 17:01
文章分类

全部博文(40)

文章存档

2014年(1)

2013年(2)

2012年(6)

2011年(5)

2010年(26)

我的朋友

分类: C/C++

2010-10-14 11:19:22

    1,C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。然而,C语言中数组的元素可以是任何类型的对象,当然也可以是另外的一个数组,这样,要‘仿真’出一个多为数组就不是一件难事。
    2,对于一个数组,我们只能做两件事:确定数组的大小,以及获得指向该数组下标为0的元素的指针。其他有关的操作,哪怕它们乍看上去是以数组下标进行运算的,实际上都是通过指针进行的。
一个典型的例子:
    int calendar[12][31];
    int(*monthp)[31];
    for (monthp=calendar;monthp<&calendar[12];monthp++)
        {int *dayp;
         for dayp=*monthp;dayp<&(*monthp)[31];dayp)
             *dayp=0;
        }
非数组的指针:
    假定有两个字符串s和t,我们希望将这两个字符串链接成单个字符串r.借助库函数strcpy和strcat。
char *r,*malloc();
r=malloc(strlen(s)+strlen(t));
strcpy(r,s);
strcat(r,t);
分析:
1,malloc函数有可能无法提供请求的内存,这种情况下malloc函数会通过返回一个空指针来作为'内存分配失败'事件的信号。
2,给r分配内存在使用完之后应该立即释放,如果r是作为一个局部变量声明的,当离开r作用域时,r自动被释放了。该程序显式的给r分配了内存,为此就必须显式的释放内存。
3,前面的例程在调用malloc函数时并未分配足够的内存。字符串以空字符作为结束标志的惯例。如果strlen(s)的值是n,那么字符串实际需要n+1个字符的空间。所以必须为r多分配一个字符的空间。

作为参数的数组声明:
    将数组作为函数参数毫无意义。C语言中会自动将作为参数的数组声明转换为相应的指针声明。
阅读(587) | 评论(1) | 转发(0) |
0

上一篇:typedef的使用方法

下一篇:指针与内存分配

给主人留下些什么吧!~~

chinaunix网友2010-10-14 17:30:52

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com