码迷,mamicode.com
首页 > 其他好文 > 详细

你真的了解数组和指针么?

时间:2014-10-02 16:42:43      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:使用   ar   sp   问题   c   amp   r   c++   bs   

        1. 数组和指针的联系想来都是密不可分的. 
实际上, 在C语言中, 只存在一维数组, 而你所看到和学到的那些所谓的多维数组, 只不过是用一维数组构造出来的. 其本质依旧是一个普普通通的一维数组. 而关键就在于, 这个一维数组中的元素, 可以是任意类型的对象. 如果我在里面放几个数组, 那么它自然就变成了多维的数组了. 
        
        2.  我们如何表示一个数组呢? 只用两个关键点即可: 大小, 首元素地址.
你或许会说, 那下标呢? 不是可以通过下标访问数组么? 没错, 这也是正确的用法, 但是, 你要知道, 那只是看上去是下标而已, 实际上在内部依旧是使用指针来进行操作的, 破开表面现象,进而看到最本质的内容, 这始终是令人激动人心的事啊.
            所以, 一个优秀的工程师, 必须具备将数组运算与其对应的指针运算融汇, 并且贯通起来. 
        
        3. 如果将数组作为参数传递给一个函数, 该怎么做呢?
在C语言中, 我可以明确地告诉你, 这是无法做到的. 那么我们怎么解决这个问题呢? 使用如下方法:
                1) 如果你使用了一个数组名作为参数了, 那么该名称就会被系统转换为指向该数组首元素的地址的指针.  例如:
                    char s [ ] = "hello, c++";
                    printf(" %s \n ",  s);
                    printf(" %s \n ",  &s[0]);        // 这两种写法是等价的
                   这使得以数组名作为函数参数变得毫无意义. 因此, C语言自动将数组名声明转换为指针声明, 例如:
                    int length( char s [ ])
                    {
                            / ......
                    }
                    
                    // 等价于:
                    int length( char *s)
                    {
                            / ......
                    }

 

你真的了解数组和指针么?

标签:使用   ar   sp   问题   c   amp   r   c++   bs   

原文地址:http://www.cnblogs.com/ApopToxin0723/p/4004129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!