C语言中定义变量的数据类型(比如:int,char)有什么区别?? 10

1、比如分配的内存大小不同,我想知道定义的变量们是随机找个初始地址,然后依次存储在内存中,还是分别存在不同的内存地址里??有什么规律吗?2、定义的变量类型不同,对源程序文... 1、比如分配的内存大小不同,我想知道定义的变量们是随机找个初始地址,然后依次存储在内存中,还是分别存在不同的内存地址里??有什么规律吗?
2、定义的变量类型不同,对源程序文件大小有关系吗??
谢谢大家!
展开
 我来答
cf_wang
2013-12-29 · TA获得超过129个赞
知道答主
回答量:35
采纳率:100%
帮助的人:16.1万
展开全部
1: 一个 int 型变量占用两个字节内存,也就是16bit;
一个 char 型变量占用一个字节内存,也就是8bit;
如果的声明变量时没有在“int”或“char”前加存储类型说明符,则编译器就会将变量默认为auto变量,这种变量会被放在运行内存里,至于怎么放这就是C编译器决定的,而且各个公司出的C编译器的处理规则是会有一些不一样的。
2:
变量类型不同对源程序文件大小没什么影响,但会对程序运行有影响;如果在8位单片机上,则int类型的数据处理速度会慢很多;如果你要存入的数会大于255,则使用 char 型就会发生溢出,使程序运行发生错误;

具体用哪一种,主要还是看你要存入的什么类型的数据。
冰火梦幻
推荐于2017-06-17 · TA获得超过2308个赞
知道小有建树答主
回答量:1095
采纳率:57%
帮助的人:425万
展开全部

程序运行时,内存分为堆区、栈区、静态区、文字常量区和代码区。

  1. 如果是局部变量,比如在main函数或其他函数内定义的int之类,是分配在栈区的。每调用一个函数,系统会在栈区当前栈顶自动分配一块内存,这块内存的大小和你这个函数里的局部变量有关,而且有大小限制,所以不可能在main里定义一个int a[1000000];的。定义在一起的局部变量,其内存也是相邻的。

  2. 如果是程序员malloc得到的内存,是来自堆区的。这里的内存分配是个很复杂的算法,重点是迅速找到一个大小合适的空闲内存,而且不产生过多碎片。这种分配的内存基本上是随机的。

  3. 定义的变量类型不同,对代码和EXE的大小没多大影响,只和运行EXE时占用的内存大小有关。

追问
1、全局变量里,定义int之类的变量,不在栈区?
2、在main函数结尾一般都加句:return 0;在哪里可以查看这个返回值?
谢谢了~
追答
  1. 全局变量的int定义在静态区。

  2. main函数的返回值,你在代码里是无法访问的。只有编译成EXE后可以查看。你用cmd运行EXE后,返回结果保存在环境变量ERRORLEVEL中。用echo %ERRORLEVEL%能看到。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ahubaoan
2013-12-29
知道答主
回答量:33
采纳率:0%
帮助的人:10.3万
展开全部
1.首先你要多看看内存管理方面的内容。 内存是由系统管理的,int和char,如果是常量那么他们会被分配到常量区,如果是静态变量,会被分到静态变量区,局部变量,又不一样。不同的定义,内存地址肯定是不同的,这个系统自己管理。
2.没影响。但对运行时所占空间就就有影响。源程序文件大小只是代码量的大小
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-06-17
展开全部
看C语言的 编程手册
char 是8位
int 是32位
……
……

~
~
~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
诸逆心骨利剑17
2013-12-29
知道答主
回答量:56
采纳率:0%
帮助的人:30.1万
展开全部
想看一下它是不是随机的,你就在vc里面自己动手测试一下呗。定义几个变量,然后调试代码,在调试里面看一下你定义的变量的地址,然后自己分析一下
追问
在哪调试呀?
追答
编译之后直接F10,然后下一步也是F10.想进入到哪一个具体的函数的话就F11
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式