C语言中定义变量的数据类型(比如:int,char)有什么区别?? 10
1、比如分配的内存大小不同,我想知道定义的变量们是随机找个初始地址,然后依次存储在内存中,还是分别存在不同的内存地址里??有什么规律吗?2、定义的变量类型不同,对源程序文...
1、比如分配的内存大小不同,我想知道定义的变量们是随机找个初始地址,然后依次存储在内存中,还是分别存在不同的内存地址里??有什么规律吗?
2、定义的变量类型不同,对源程序文件大小有关系吗??
谢谢大家! 展开
2、定义的变量类型不同,对源程序文件大小有关系吗??
谢谢大家! 展开
展开全部
1: 一个 int 型变量占用两个字节内存,也就是16bit;
一个 char 型变量占用一个字节内存,也就是8bit;
如果的声明变量时没有在“int”或“char”前加存储类型说明符,则编译器就会将变量默认为auto变量,这种变量会被放在运行内存里,至于怎么放这就是C编译器决定的,而且各个公司出的C编译器的处理规则是会有一些不一样的。
2:
变量类型不同对源程序文件大小没什么影响,但会对程序运行有影响;如果在8位单片机上,则int类型的数据处理速度会慢很多;如果你要存入的数会大于255,则使用 char 型就会发生溢出,使程序运行发生错误;
具体用哪一种,主要还是看你要存入的什么类型的数据。
一个 char 型变量占用一个字节内存,也就是8bit;
如果的声明变量时没有在“int”或“char”前加存储类型说明符,则编译器就会将变量默认为auto变量,这种变量会被放在运行内存里,至于怎么放这就是C编译器决定的,而且各个公司出的C编译器的处理规则是会有一些不一样的。
2:
变量类型不同对源程序文件大小没什么影响,但会对程序运行有影响;如果在8位单片机上,则int类型的数据处理速度会慢很多;如果你要存入的数会大于255,则使用 char 型就会发生溢出,使程序运行发生错误;
具体用哪一种,主要还是看你要存入的什么类型的数据。
展开全部
程序运行时,内存分为堆区、栈区、静态区、文字常量区和代码区。
如果是局部变量,比如在main函数或其他函数内定义的int之类,是分配在栈区的。每调用一个函数,系统会在栈区当前栈顶自动分配一块内存,这块内存的大小和你这个函数里的局部变量有关,而且有大小限制,所以不可能在main里定义一个int a[1000000];的。定义在一起的局部变量,其内存也是相邻的。
如果是程序员malloc得到的内存,是来自堆区的。这里的内存分配是个很复杂的算法,重点是迅速找到一个大小合适的空闲内存,而且不产生过多碎片。这种分配的内存基本上是随机的。
定义的变量类型不同,对代码和EXE的大小没多大影响,只和运行EXE时占用的内存大小有关。
追问
1、全局变量里,定义int之类的变量,不在栈区?
2、在main函数结尾一般都加句:return 0;在哪里可以查看这个返回值?
谢谢了~
追答
全局变量的int定义在静态区。
main函数的返回值,你在代码里是无法访问的。只有编译成EXE后可以查看。你用cmd运行EXE后,返回结果保存在环境变量ERRORLEVEL中。用echo %ERRORLEVEL%能看到。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.首先你要多看看内存管理方面的内容。 内存是由系统管理的,int和char,如果是常量那么他们会被分配到常量区,如果是静态变量,会被分到静态变量区,局部变量,又不一样。不同的定义,内存地址肯定是不同的,这个系统自己管理。
2.没影响。但对运行时所占空间就就有影响。源程序文件大小只是代码量的大小
2.没影响。但对运行时所占空间就就有影响。源程序文件大小只是代码量的大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-06-17
展开全部
看C语言的 编程手册
char 是8位
int 是32位
……
……
~
~
~
char 是8位
int 是32位
……
……
~
~
~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
想看一下它是不是随机的,你就在vc里面自己动手测试一下呗。定义几个变量,然后调试代码,在调试里面看一下你定义的变量的地址,然后自己分析一下
追问
在哪调试呀?
追答
编译之后直接F10,然后下一步也是F10.想进入到哪一个具体的函数的话就F11
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询