c的关于数组初始化 和 memset用法
今天为了彻底搞定一个关于c中数组初始化和声明不同情况下,比如只声明一个数组char str[20];那么这str里面是什么内容呢?我用vc6++,debug下看到都是-56饿asc码,后来请教了一个华为的大牛,他说 按照理论来说里面的内容都是有可能的,这和叫做“脏内存”或者叫做“野数组”。好了第一个问题搞懂了。
第二个问题 memset的问题,之前在万臣解析fast协议的时候,因为是刚入门C,薄荷老大给我说一般声明了数组吼都用memset一下。当时不是很理解,但是现在这句话知道了。
举例一下:
比如 char str[20];
对于str的连续20个单元都是随意的值
char str[20] = "Hello World!";
这个时候对于str,前面的字符是 Hello World 紧接着是'\0';也就是说str尽管后面没用到的内存单元也是0了,不是随意值
如果 memset(str, 0, sizeof(str));
那么这句话也是把str的前sizeof(str)个单元都赋值给0
如果是memset(str, 1, 10)
那么这句话是把str的前10个单元都赋值给1了,其余的还是 随意值
记录一下!
相关文档:
C++/C试题的答案与评分标准(来自于林锐的<<高质量C++编程指南>>),全文请到本博资源中下载.
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
请写出 BOOL flag 与“零值”比较的 if 语句。(3分)
标准答案:
if ( flag )
&nb ......
CentOs5安装apache的时候
#./configure
(于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。)
提示错误如下:(没有GCC编译器环境)
checking build system type... i686-pc-linux-gnu
checking host system type.. ......
这两天,给自己电脑弄了双系统,除了原来的Windows 7系统外,装上了Linux系统,使用的版本是Ubuntu
(点
击可到相应的下载页面)。开始我装的Linux版本是fedora9,对于一个根本没接触过Linux系统的人而言,使用fedora,简直让人崩溃。更
崩溃的是,我用的英文版。没的办法,又重新下载Linux,刻碟。装系统。装系统的时候 ......
网上有好多篇文章讲如何配置.vimrc文件来实现VIM里一键编译,看了一下比较复杂。我一般没有什么大的程序要写,一般的小程序单个C文件就搞掂了,所以简化了一下网上的配置,在.vimrc里加上两行就满足我的需求了。
set makeprg=gcc\ -Wall\ -o\ %<\ %
map <F7> :make<CR ......