c的关于数组初始化 和 memset用法

时间:2022-09-06 19:46:08

今天为了彻底搞定一个关于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了,其余的还是 随意值

 

记录一下!