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了,其余的还是 随意值
记录一下!
相关文档:
CentOs5安装apache的时候
#./configure
(于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。)
提示错误如下:(没有GCC编译器环境)
checking build system type... i686-pc-linux-gnu
checking host system type.. ......
1.概念
在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. ......
这两天,给自己电脑弄了双系统,除了原来的Windows 7系统外,装上了Linux系统,使用的版本是Ubuntu
(点
击可到相应的下载页面)。开始我装的Linux版本是fedora9,对于一个根本没接触过Linux系统的人而言,使用fedora,简直让人崩溃。更
崩溃的是,我用的英文版。没的办法,又重新下载Linux,刻碟。装系统。装系统的时候 ......
windows7 + ubuntu9.10双启动,这个有太多的帖子了,不过这次的情况比较复杂.
先装的WIN7,后装UBUNTU,没有任何问题.GRUB双启动.
后来因为一个情况,要装XP,把WIN7做了 ghost.装完XP,GRUB当然没有了,于是用ubuntu启动盘修复.
虽然启动菜单出来了,但只能进行ubuntu,进入windows的时候就提示error:cannot get C/H/S value ......