c语言中的数组和指针的区别

如题所述

指针可分为:指针常量,指针变量。指针常量是指在程序运行过程中变量值不能改变的变量(例如:char* const p = "abc";)。指正变量是指在程序运行过程中变量值可以改变的变量(int * p;p++;)。
数组:数组是装载的容器,数组名代表数组首地址(例如:int a[20],则a代表的是a[0]的地址),数组名是一个指针常量,在运行过程中不能改变其值(如上:a的值是&a[0],若有a=&a[2]:则报错)。
他们的区别:数组名是一个指针常量,而指针可分为:指针常量和指针变量。
我想你应该明白了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-27
C语言中,数组的名称等价于数组的首地址,
当然可以利用指针开辟动态空间,使用方式与数组在形式上相同的,
但是他们有一个本质的区别,数组名相当于一个地址常数,而指针是一个以地址为内容的变量。
指针与数组的关系可以参考下面的网页:

http://zhidao.baidu.com/question/341950481.html本回答被网友采纳
第2个回答  2011-11-27
定义char a[100], *b = a;
1、数组和指针都表示地址,在某些情况下,数组和指针是可以相互使用的,如访问某个元素,a[2], *(a + 2), b[2], *(b +2)
2、不同的是,数组初始化时就有给定值的空间,标识符不能更改,如a = 0,这是错误的。而指针如果不初始化,值是随机的,需要给指针分配空间才能访问。
第3个回答  2011-11-27
数组是存放数据的一段空间,数组中可以存放字符和数字。指针相当于一个地址,它是指向某个单元的地址。。数组名相当于指针。。
第4个回答  2011-11-27
数组名是数组的第一个元素的地址,其意义相当于一个指针,比如
int a[10],*p;
p=a; //把数组的首地址赋给了p
p=&a[0]; //p的初值为a[0]的地址与上面的语句等价
可以通过指针引用数组元素
数组本来就有两种表示方法
一种是下标法如a[i];
一种是指针法如*(a+i)或*(p+i)这两种表示方法都与a[i]等价