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

数据结构复习笔记--数组

时间:2014-09-03 11:01:26      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:for   数据   sp   amp   c   size   算法   bs   c语言   

  最后还是决定在未来的道路上走向软件开发者这条路,从现在重新复习数据结构和算法。

  关于数组有几个比较有意思的特点。

  1.对于数组 int List[3],编译器将List[i]解释为指向一个地址为List + i*sizeof(int)的整数的指针。

     对于int * List, int *List2[5],两个都是指向int 类型的变量,但是编译器会为后者分配五个整数存储空间。

     List2实际是上指向List2[0],List2 + i 实际上是&List2[i].在C语言中是不需要加上偏移量的。故*(List2 + i) = List2[i];

 2.C语言中,数组作为参数,接受数组作为参数的函数实际上不会为数组重复分配空间,可以理解为当数组作为参数时,仅仅将自己的地址传进去了,(感觉像传址调用),所以函数中对参数数组的变动也会反映在数组本身。

   /*举个例子*/ int sum(int list [], int n ) //n为维数

                     {

                        for ( int i = 0, i < n ; i++)

                               {

                                         list[i] += i;

                                }

                     }

                     sum(a,3);

   在这里面,实参比如说 a= &a[0],先被复制到一个临时单元中,成为形参list的具体值。在函数体中,若list[i] 出现在赋值语句左边,就间接引用(list + i)指向的值,若list[i]出现在赋值语句右边,则等号右边的求值结果会存入单元(list +i).这个例子告诉我们虽然C语言函数传值调用,但数组作为函数参量并不传递具体的数组内容。

 

数据结构复习笔记--数组

标签:for   数据   sp   amp   c   size   算法   bs   c语言   

原文地址:http://www.cnblogs.com/ModifyRong/p/3953111.html

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