发布网友 发布时间:2023-07-24 18:23
共6个回答
热心网友 时间:2024-10-26 21:20
谭浩强的C语言书很老旧。追答谈编译器设计的书。
热心网友 时间:2024-10-26 21:21
程序运行的数据段分为,初始化数据段,非初始化数据段,常量区。这里的常量指的是printf("I am a string\n");里面I am a string指的是常量,还有const int i = 4,这里的i也是常量,常量是只读的,不能在程序运行的时候进行修改的,而int i=4,这个内存是在初始化数据段分配的,你想改,程序里面可以让i = 5热心网友 时间:2024-10-26 21:21
把思路理清一下,int i=4的真正含义是什么,就是告诉一个整型变量的值为4,4不代表任何东西。说的不知道是否清楚,可以一起探讨追问不知道你看过谭的书没有,书上有这样一段原话:(如果有:float a=3.14159;在进行编译时,对float变量分配4个字节,但对于浮点型常量3.14159,则按双精度处理,分配8个字节。编译系统会发出“警告”。) 他说3.14159分配8个字节,那整个这个语句不就是分配12个字节了?追答我没看过谭的书。你太纠结于字面的意思了。其实好好思考一下就应该知道作者真正的意思。作者的意思是要存3.14159这样的数需要8个字节的“容器(double float)”,而float这个“容器”只有四个字节,放不下它,所以编译器会出错。
关于printf那个,sizeof()只是返回相应变量会占用的内存的大小,而不是已经占用了。
不知道说的清楚不!
热心网友 时间:2024-10-26 21:22
字符串常量占用内存追问像什么整形,浮点型什么的不占是吗
热心网友 时间:2024-10-26 21:22
本例子只分配4字节内存。只有变量占内存。 书上说的是在运算过程中,数字常量占内存,不是在赋值的时候就占内存。热心网友 时间:2024-10-26 21:23
...int i=4 意思是把4放到i的内存地址里去··i就变成4了··只是占4个字节...