摘要: 1.定义
定义数组时必须指定数组的类型和大小,
定义指针时只需要指定类型。
2.存储空间的分配
对于数组,因为系统会按照你指定的大小为数组分配存储空间,这也是为什么数组必须指定大小的原因,如:char array[5] ; //系统会自动为其预留sizeof(char)*5个字节的连续内存(注意是连续的)。所以我们可以对array[0]...array[4]这五个变量随便访问(读和写)都不会有问题。
对于指针,系统只会为所定义的指针变量分配空间,指针所指向的地点并未分配。举个例子: char *p ; 这里会为变量p分配空间,大小为4字节(32位机),但是*p(就是p指向的地方)却是随机的地方,这个地方系统也不为其分配空间。所以在这种情况下,你访问和给p赋值(p=...)都是允许的,但是访问*p或者给*p赋值都是错误的。我们要想使用*p必须先使其指向有效区域,这可以通过动态申请内存或者赋值(将知道的有效地点赋给它)来实现。
提醒一下:对于指针,在使用时,不光所指向的区域能读写,指针变量本身也能读写,但是数组不同,数组名的不能写的
阅读全文