关于char数组初始化的一些细节
2013-10-20 08:31
363 查看
[cpp]
view plaincopy
#include<stdio.h>
#include<string.h>
int main()
{
int i;
char s[100];
memset((void *)s,0,100);
if(s == NULL)
{
printf("s==NULL;s=%s;/n",s);
}
else
{
printf("s!=NULL;s=%s;/n",s);
}
for(i =0;i<100;i++)
{
printf("s[%d]=%c;",i,s[i]);
}
printf("/n");
printf("len=%d/n",strlen(s));
printf("sizeof=%d/n",sizeof(s));
return 0;
}
![](http://hi.csdn.net/attachment/201105/15/0_1305437954N44k.gif)
1
char数组全部初始化为0后,数组名s并不等于NULL。如果后面用来存取一个字符串时,判断是否读取成功,要用strlen,不能与NULL作比较。
2
char s[100]={0}效果与后面的memset((void *)s,0,100);一样,全部初始化为0。但是要注意char s[100]={'a'};只初始化了s[0]='a',其他的全部为0.如果不做任何初始化的话,数组的内容不确定。
view plaincopy
#include<stdio.h>
#include<string.h>
int main()
{
int i;
char s[100];
memset((void *)s,0,100);
if(s == NULL)
{
printf("s==NULL;s=%s;/n",s);
}
else
{
printf("s!=NULL;s=%s;/n",s);
}
for(i =0;i<100;i++)
{
printf("s[%d]=%c;",i,s[i]);
}
printf("/n");
printf("len=%d/n",strlen(s));
printf("sizeof=%d/n",sizeof(s));
return 0;
}
![](http://hi.csdn.net/attachment/201105/15/0_1305437954N44k.gif)
1
char数组全部初始化为0后,数组名s并不等于NULL。如果后面用来存取一个字符串时,判断是否读取成功,要用strlen,不能与NULL作比较。
2
char s[100]={0}效果与后面的memset((void *)s,0,100);一样,全部初始化为0。但是要注意char s[100]={'a'};只初始化了s[0]='a',其他的全部为0.如果不做任何初始化的话,数组的内容不确定。
相关文章推荐
- 关于char数组初始化的一些细节
- 关于数组局部初始化的一些延伸
- 关于初始化数组 c++ memset函数。和sizeof的一些说明。
- 关于c的字符串的一些小细节以及c在计算机里数组的内存存放
- 关于char数组和字符串的一些问题
- 关于数组指针,字符串指针的一些小细节
- 【react】关于react框架使用的一些细节要点的思考
- C++关于数组与指针一些值得注意的笔记
- C/C++关于字符串string、char*字符串数组与其他类型转换
- 关于“不能将参数1 从“CString”转换为“const char *””的一些思考
- 关于柔性数组的一些问题
- 关于03标准C++新添加的数组初始化方式
- 关于登陆页面回车键的一些细节处理
- 关于递归调用,函数指针,数组,字符串的一些理解
- C语言里面关于数组的一个容易忽视的小细节
- 关于多维数组的静态初始化的分析[图结合程序说明]
- error:关于const变量来初始化数组
- js中关于数组复制的一些认识(感谢IT民工和见Q,如见人的指导)
- 关于Java的一些基础细节(整理)
- 关于数组的一些经常使用函数