首页 相关文章 水滴石穿C语言之指针步进辨析

水滴石穿C语言之指针步进辨析

基本解释
  
  通过上一篇的分析,我们已经很清楚地知道:指针不是一个简单的类型,它是一个本身和所指向物相复合的类型。指针的算术运算(如步进)与指针所指向物的类型密切相关。
  
  问题:指针步进 & 步进单位
  
  下面的代码中打印出的结果是几?
  
  int arContext[5] ={0,1,2,3,4}, i, *pAr;
  pAr = arContext;
  printf ("%d", *(pAr + 3 * sizeof (int)));
  答案与分析:
  
  这段代码没有正确答案,因为这段代码是错的,printf将打出无法猜测的内存区的值,其中的原因如下:
  
  在C语言中,指针总是按照它所指向的对象的大小步进。在上面的例子中,pAr是指向整数类型变量的指针,一个整数是4个字节(默认CPU字长是32位),pAr + 1就指向下一个整数,也就是指针后移4个字节,而不是说将地址只移动一个字节。
  
  因为C语言编译器知道每个指针的类型,因此对指针的运算是会自动把所指类型的S...[ 查看全文 ]

2016-02-19 标签:

水滴石穿C语言之指针步进辨析的相关文章

手机页面
收藏网站 回到头部