卡宴是什么标志:指针与数组的区别?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 12:09:55

数组名相当于一个const 的指针~~~~~~

数组是一块类型相同的连续的存储空间,比如,int a[5];一个int 占2个字节的话,那就是指从0X121230(假设从这里开始)到0X12123A的十个字节,其中a指示的是这段连续空间的第一个位置(即0X121230),这个连续空间中一共可以存储5个整数。
而指针,指示的就是一个地址,就好像刚才提到的a,它可以被认为是一个指针。你看,这样定义很有趣, int *a, a = new int [5];这里的a 是一个指针,它指向一个
整形数组的第一个位置,就和前面提到的a是一回事了。

另外在函数传递的时候,传递的参数是数组其实是传递数组首位置的指针,例如定义一个函数 SomeFun(int a[5]); //其中的5没任何意义 和SomeFun(int a[]),SomeFun(int *a) 意思相同;
你的程序中,可以用int a[5];SomeFun(a);
或者 int *a; a = new int [5]; SomeFun(a);

int a[6],*p;
p=a;
p++是正确的。
a++是错误码的,因为数组一旦定义,数组名相当于常量。

指针更灵活可以指向任何类型的变量,但数组就不可以。
指针是C的精华,学好指针基本上就是学好了C。

区别一目了然!除了都是变量外,没有任何相似性。

你是学C的吧?