码迷,mamicode.com
首页 > 编程语言 > 详细

c语言内存对齐(1)

时间:2014-06-16 06:02:54      阅读:377      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

在《C陷阱与缺陷》有这样一个例子:

bubuko.com,布布扣
 1 #include <stdio.h>
 2  int
 3  main(void)
 4  {
 5          int i;
 6          char c;
 7          for(i=0;i<5;i++){
 8                  scanf("%d",&c);
 9                  printf("%d ",i);
10          }
11          printf("\n");
12          return 0;
13  }
bubuko.com,布布扣

这个例子是讲printf和scanf函数接受函数应注意的情况的。运行这个例子,会发现,输入1,2,5,7等数,输出一直是0。这是因为scanf读入一个整数,但得到的却是一个指向字符的指针。scanf函数不能分辨这种情况,它只是将这个指向字符的指针作为指向整数的指针而接受,并在指针位置存储一个整数。因为整数所占的存储空间要大于字符,所以字符c附近的内存会被覆盖。c存储的是整数的低位部分,如果输入61147(1111 0000 0000 0111),会得到输出240。

c语言内存对齐(1),布布扣,bubuko.com

c语言内存对齐(1)

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/xianzhedeyu/p/3784046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!