数组名和指针

今天自己尝试写了一个小程序,但是运行时发生错误,就简单的回顾了一下C语言中的数组名和指针。

相同点:

他们都具有指针值,都可以通过下标引用和间接访问操作。

不同点:

声明一个数组的时候,编译器先根据指定的元素的数量分配内存空间容纳数组元素,在创建数组名,注意数组名是一个指针常量。

这两种声明只有当他们是函数的形参的时候才是相等的。

声明一个指针的时候,编译器为指针本身分配一个内存空间用于存储指针值。

下面是这个小程序修改之后的正确的版本以及部分注释。

#include<stdio.h>
int main(int argc, char const *argv[]) {
  char str[] = "sdfdsgfd";//此处不能够使用指针
  char *pstr = str;

  while ( *pstr  ) {//也可以使用 *pstr != '\0'
    printf("%s\n", pstr++ );
    //str++;数组名为常量指针,不能使用str++
  }
  
  return 0;
}


有关指针和数组的详细介绍:http://blog.csdn.net/loveyou426/article/details/7901177

《C和指针》中的一道练习题,说明对数组名和指针执行下标引用操作的不同效果:http://blog.csdn.net/wdkirchhoff/article/details/40989321

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值