一个指针是不是就是一个数组?

我申请了一个指针,我可以当数组用吗?
比如int *a;
我能用a[0]=7;a[2]=9;这样吗?那他的空间分配是如何分配的?请讲下过程,谢谢
我这样试着写了下,竟然成功了,怎么回事???
#include <stdio.h>
#include <stdlib.h>

int main()
{
int *a;
a[0]=7;
a[1]=9;
printf("%d",*a);
}

成功是可能会成功,但是违法,因为没有为a分配空间,如果给a分配空间了那就可以当数组来用,不同的一点是指针可以移动,数组名不可以,比如如果a是指针可以进行a++,但如果是数组就不行。
上面的可以改为 a=(int *)malloc(sizeof(int)*2);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-15
指针是一个地址
数组名在处理时可以当做指针用
第2个回答  2009-11-15
不可以
指针就是存放一个地址
而数组是内存空间
第3个回答  2009-11-15
数组的实质是指针。
你定义一个数组a[10],实际你定义的是一个指向&a[0]的指针。
a[0] *a+0
a[1] *a+1
a[5] *a+5
……
这些是等价的。
相似回答