数组和指针的区别

考虑两个声明:

int a[5];
int *b;

数组和指针的相同点:都可以通过“*”操作符进行间接访问和“[]”进行下标引用操作。

不同点:

  1. 声明一个数组时,编译器将根据声明时指定的元素个数为数组在内存中分配空间,int a[5];将会在内存中分配5个存储int类型数据的空间。而int *b;则只会分配一个存储指向int类型变量的指针所需的空间。也就是说,int a[5]会分配5个空间,每个空间用来存储int类型的数据;int * b会分配一个空间,这个空间用来存放一个地址,并且这个地址是未知的,因为并未对指针变量b进行初始化。
  2. 在未进行其他赋值操作之前,*a操作是合法的,但是*b确是非法的。因为*a将访问的内存空间是确定的,而*b将访问的内存空间是不确定的。
  3. a++不能通过编译,b++可以通过编译,因为a的值是一个常量。a是一个指针常量,b是一个指针变量。

    a:
         

    b:
        ?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值