请教C问题!
时间:2008-05-14 10:37:21
来源:论坛整理 作者: 编辑:chinaitzhe
1 CONST 和#define 的区别;
2 除了赋值和逻辑表达式之外,还有什么表达式有值?还是都有?
3 一个整型的指针和一个字符型的指针是不是都是4 个字节?
4 怎么样吧一个字符型数组全部元素赋空?最简单的办法?能不能不用循环?
5 声明变量假如不初始化,在什么时候值是空或者0,什么时候是随机值》
6 变量的内存地址在什么时候确定?编译还是运行?
(不好意思,勿笑!)
网友回复:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ //搌点人品吧,分数无所谓的,^_^ 1.const是定义常量,define是宏替换,前者用的较多, 2.是表达式就有值吧, 3.是的,指针都是4个字节的,全部是地址嘛, 4.字符数组啊,可以的,只要已知数组的尺寸就可以, 5.变量不初始化,一般都是随机值,和编译器有关, 6.这个有点不清楚,猜是运行时,
网友回复:回答一下的六个问题:
程序编译完成之后,进程的内存映象地址就已经确定, 就是说数据区,程序区等都已经确定,不过实际的物理内存地址只有在程序运行时才获得分配,这个物理地址在每次运行时候肯定是不一样的,一样的也是很小很小的一个巧合。
网友回复:1、const声明的是常量, 会在内存中占用一个地方存放常量的内容。 #define是宏定义,简单理解就是供编译器预编译时替换源代码中字符串用的, 和最终程序没有关系。
2、所有表达式都有值
3、所有类型的指针都是一样长的,在32位系统上就是4字节
4、可以用memset(arr, 0 sizeof(arr))一次性清空arr字符数组
5、声明的全局变量假如没有指定初始值会默认初始化为0或空(尽管标准没有定义,但是所有编译器都会这么干), 局部变量是任意值, 因为它是分配在栈上的(底层最简单的分配代码就只有一句汇编 sub esp, xxx)
6、内存地址是在运行期才确定的, 尽管编译器生成的代码访问的静态地址都是以一个默认的起始地址开始计算的地址。但最终的地址要由操作系统的程序加载器根据实际起始地址进行调整。 另外所有动态分配内存的地址在编译器生成期是无法得知的, 只能到运行期才能得知
关键字:请教,问题,
上一篇:Const修饰的函数重载
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面