ITfeng

 

C语言学习笔记-数组

一.C语言中参数传递传递都是传值,都是对数值的拷贝的一个副本

二.递归与迭代
用递归能够解决的问题,一定能用迭代(循环)解决
(1)递归的特点:思路简单,运算较慢
使用递归,关键是找到递归的出口
递归由于不停地出栈和入栈,并且前一次的结果并没有保留,下一次还得计算,

所以效率是比较低的
改进递归算法的一种方法是将前面的计算结果进行保留,提高效率
(2)迭代就是用循环解决问题,迭代算法的效率是很高的

三.有关数组的理解
(1)数组名永远是数组中第一个元素的地址
(2)*和[]是一样的
(3)二维数组也可以看做是一维数组,只不过数组中每个元素又是一个数组

 

四.数组小练
int array[10];
int *ap=array+2;
(1)*(ap) : array[2]
(2)ap[0]:虽然ap是一个指针,但是也可以使用下标,因为[]和*是一样的
array[2]
(3)ap+6:&array[8]或array+8
(4)*ap+6:array[2]+6
(5)*(ap+6):array[8]
(6)ap[6]:=>*(ap+6)=>array[8]
(7)&ap:对指针变量取地址
(8)ap[-1]:=>*(ap-1)=>array[1]
(9)ap[9]=>*(ap+9)=>array[11]越界

五:指针和数组的区别
(1)int a[5];
int *b;
*a合法 *b不合法 因为不知道b指向什么
a++不合法,因为a是常量 b++合法
(2)
char message1[]="hello";//这是实打实的赋值
char *message="hello";//这是"hello"的首地址赋值给message

六.接收二维数组的形参
int matrix[5][10];
void func(int (*p)[10]);
void fuc1(int a[][10]);

七.注意区分 指针数组和数组指针
指针数组:数组中每个元素都是一个指针类型,是数组
指针数组要注意的是给每个指针赋值,否则会有段错误
数组指针:指向数组的指针,是一个指针

 

 


 

posted on 2012-04-13 21:25  ITfeng  阅读(914)  评论(0编辑  收藏  举报

导航