-
2019-03-02 11:14:59
char str[1024] = {0};
头文件为#include
更多相关内容 -
字符数组初始化为空
2020-04-08 16:38:20字符数组初始化为空1. 总结起来有以下三种方式:2. 分析3. 结论 1. 总结起来有以下三种方式: (1) char str[10]=""; (2) char str[10]={’\0’}; (3) char str[10] = ‘\0’; 2. 分析 第(1)(2)种方式是将str数组的...1. 总结起来有以下5种方式:
#define STR_LEN 1023 (1) char str[STR_LEN + 1]=""; (2) char str[STR_LEN + 1]={'\0'}; (3) char str[STR_LEN + 1]; str[0] = '\0'; (4) char str[STR_LEN + 1]; str[0] = 0; (5) char str[STR_LEN + 1]; memset(str, 0 ,sizeof(str));
2. 分析
第(1)(2)(5)种方式是整体清0了整个缓冲区,效率较低;
如果数组的size非常大,那么这三种方式将会造成很大的开销。而第(3)和第(4)种方式是只将str数组的第一个元素初始化为0,效率高;
3. 结论
- 效率高,使用3、4初始化;
- 规范,建议使用5初始化(memset)
因为有过用3/4的方式初始化,导致后面字符未初始化,而是随机值,正好使用了这些值,打印出来也是乱码导致。
4. 扩展:
4.1 不使用 szName[0] = ‘0’,使用szName[0] = 0
szName[0] = '0' ; // Warning 4195 Possible confuse digit '0' or zero-terminate '\0' or letter 'O' //混淆数字0 和 字符串结尾字符 \0 ,建议直接使用 0 即可
4.2 空字符串判断
推荐用法:
if (0 != pcUserName[0]) // 推荐:安全 可靠
错误用法:
if (0 == strlen(pcUserName)) Warning 4170 Function 'strlen' is unnecessary or duplicate if('0' == pcUserName[0]) 同上 Possible confuse digit '0' or zero-terminate '\0' or letter 'O'
-
怎么把已经初始化的字符数组设置为空?
2021-05-20 11:54:54怎么把已经初始化的字符数组设置为空?两种方法,如下所示。方法一:代码演示#include #include int main(void){char a[]={'x','y','z'}; //定义字符数组,并初始化int i=0;for(i=0;i<3;i++)printf("%c\t",a[i]);...怎么把已经初始化的字符数组设置为空?
两种方法,如下所示。
方法一:
代码演示
#include #include int main(void)
{
char a[]={'x','y','z'}; //定义字符数组,并初始化
int i=0;
for(i=0;i<3;i++)
printf("%c\t",a[i]); //输出初始化的数组
memset(a,'\0',sizeof(a)); //把数组设置为空
while(i<3)
printf("\n%c\t%c\t%c",a[i]);
return 0;
}
memset相关原理
memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全 部设置为指定的值,这个函数通常为新申请的内存做初始化工作。
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 [1] 。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.
sizeof()相关原理
在 Pascal 语言中,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C
语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。 在Pascal 语言与C语言中,对 sizeof()
的处理都是在编译阶段进行。
方法二:
代码演示
#include #include int main(void)
{
char a[]={'x','y','z'}; //定义字符数组,并初始化
int i=0;
for(i=0;i<3;i++)
printf("%c\t",a[i]); //输出初始化的数组
bzero(a,sizeof(a)); //把数组设置为空
while(i<3)
printf("\n%c\t%c\t%c",a[i]);
return 0;
}
bzero相关原理
置字节字符串前n个字节为零且包括‘\0’。
原型:extern void bzero(void *s, int n);
参数说明:s 要置零的数据的起始地址; n 要置零的数据字节个数。
用法:#include 功能:置字节字符串s的前n个字节为零且包括‘\0’。
说明:bzero无返回值,并且使用string.h头文件。
sizeof()相关原理
在 Pascal 语言中,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C
语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。 在Pascal 语言与C语言中,对 sizeof()
的处理都是在编译阶段进行。
-
字符数组初始化
2021-08-27 13:19:38编程良好习惯:定义char型数组时赋初值为'\0' 原因:当数组定义不赋值时,不同编译器为这个... 当采用这种方式初始化时,要注意等号后面的字符串长度要小于(等于也不行)字符数组元素个数。 比如array[20]代表数...编程良好习惯:定义char型数组时赋初值为'\0'
原因:当数组定义不赋值时,不同编译器为这个数组定义的初值也不确定,即使在后面的程序中对这个数组的部分元素进行的赋值,当cout打印这个数组时可能会打印出乱码
例:char array[10] = {'\0'}
char型数组在定义时初始化:
1. char array[20] = "Hello World!";
当采用这种方式初始化时,要注意等号后面的字符串长度要小于(等于也不行)字符数组元素个数。
比如array[20]代表数组元素个数为20,"Hello World!"的长度为12. gcc编译器在编译时会依次把""中的字符串按单个字符对数组进行赋值,并以'\0'做为最后一个字符赋值给数组,剩余的数组元素赋为初始值'\0',所以这里array的大小最小为13。
2. char array[] = "Hello World!"
这种方式的初始化编译器会根据字符串自动判断array数组的大小,上面的例子中 array元素个数为13.
如果单纯定义char array[]; gcc编译并不会报错,用sizeof显示这个数组大小为0,所以这样定义数组没有任何意义。
双引号""只能用于字符数组的初始化中,在后面的单个元素赋值时只能用单引号''。
-
java代码-例子4-7 用字符数组初始化String对象
2021-07-15 04:17:38java代码-例子4-7 用字符数组初始化String对象 -
C/C++ | C语言字符数组初始化,有些赋值方式千万注意
2022-03-01 17:55:40一、字符数组的定义和初始化 字符数组的初始化,最...若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0')。 如char str[10] = {'\0'}; //结果里面元素全都为\0.其实这样赋值只是 -
C 字符串数组初始化问题
2021-05-19 09:29:161、定义的时候直接用字符串赋值char a[10]="hello";注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!2、对数组中字符逐个赋值char a[10]={'h','e','l','l','o'};3、利用strcpychar a[10]; ... -
c++数组定义 初始化 输入和输出 字符数组定义初始化 输入和输出
2018-06-07 09:56:48很清楚展现了数组的定义, 初始化, 输入和输出 ,字符数组的应用,以及多维数组应用。 -
(C++)字符数组初始化的两种方法
2021-03-19 19:32:10//字符数组的两种赋值方法 int main(){ //1.方法一 char str1[14] = {'I',' ','l','o','v','e',' ','m','y',' ','m','o','m','.'}; for(int i = 0;i<=13;i++){ printf("%c",str1[i]); } printf("\n... -
C语言中字符数组初始化的几种方法
2019-04-14 16:39:301.C语言中的字符数组初始化 在C语言中,字符串是当做字符数组来处理的;所以字符串有两种声明方式,一种是字符数组,一种是字符指针。 1.1 直接逐个初始化字符数组:字符数组的初始化,最容易理解的方式就是逐个... -
二维字符数组的定义,初始化
2021-01-14 17:57:26因为每次初始化字符数组的时候都有点问题,所以特意发一篇博客提醒一下自己。 二维字符数组的定义 二维字符数组的定义格式为: char 数组名[第一维大小][第二维大小]; 如: char c[3][10]; //定义了一个3行10列的二... -
C语言字符数组初始化
2011-01-26 21:04:30C语言字符数组初始化经典相关资料,涉及字符的详细介绍,字符串数组的介绍 -
字符串数组初始化为空串
2019-10-28 10:46:36(1) char str[10]=""; (2) char str[10]={'\0'}; (3) char str[10]; str[0]='\0'; -
【Java】字符串一维数组初始化
2021-11-30 22:52:39初始化一维字符串数组有三种方法: String[] strs = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 String[] strs = new String[]{"","","","",""}; // strs = new String[] {“1”,“2”,“3”};... -
C语言 字符数组初始化以及memset函数
2020-09-07 19:27:53首先为什么要初始化数组:假如创建了一个没有初始化的数组,里面其实各个位置是含有值的,举例: ... 当然可能会有一些情况导致这种方法不能初始化,或者字符数组是动态创建的,没有一个可以进行{0}的. -
字符数组的初始化
2020-12-30 10:33:291.用字符串常量初始化,但是不指定长度由编译器计算。 如: char str4[]="Hello world!"; 对于这种赋值方式会自动添加’\0’ 2.直接给出字符数组中的各字符 如: char str1[5]={'a','b','c','d','e'}; 3.直接给... -
利用字符数组对字符串进行初始化
2019-09-24 21:21:04static void Main(string[] args) { string str = "中国70周年国庆"; Console.WriteLine(str); //利用字符数组对字符串进行初始化 char[] charArray = { 'c', 'h', 'i', 'n','a'... -
C语言字符数组和字符串数组的初始化
2018-12-01 17:13:53//字符数组的初始化 char c1[3] = {'A','a','c'}; printf("%d\n", sizeof(c1)); //3 char c2[10] = { 'A', 'a', 'c'}; printf("%d\n", sizeof(c2)); //10 char c3[] = { 'A'... -
C语言字符数组初始化.pdf
2021-11-23 06:09:51C语言字符数组初始化.pdf -
C++字符数组初始化和未初始化等系列问题分析
2020-04-08 20:46:101.字符数组未初始化里面元素值为多少 (1) 字符数组定义在main函数外面 -
C 语言字符数组的定义与初始化
2021-09-28 21:39:521、字符数组的定义与初始化 ...长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' )。 2、字符数组与字符串 在c 语言中,将字符串作为字符数组来处理。(c++中不是) 在实际 -
字符数组的初始化及字符串的使用
2020-10-15 18:55:45文章目录字符数组的定义字符数组初始化字符串存放'\0'的作用 字符数组的定义 同整型数组一样: char c[10]; char ch[3][4]; 字符数组初始化 定义数组时初始化,如: char c[10]={'a','b','c','d'}; 如果输出格式为... -
字符串数组初始化相关问题总结
2017-12-05 21:04:00C字符串数组初始化相关问题总结 在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串。总结起来有以下三种方式: (1) char str[10]="";(2) char str[10]={'\0'};(3) char str[10]; ... -
c++字符数组的定义及初始化
2021-12-10 10:20:47定义时进行初始化: char ch[20]="cpp"; //ok cout << ch << endl; 仅定义不初始化 char ch[20]; ch = "cpp";//出现”表达式必须是可修改的左值“的错误提醒,编译报错“不可指定数据类型”。 ...