字符数组应该怎样初始化才最有效最安全?下面来看几个例子:
1.
#include <stdio.h>
int main(void)
{
char arrChar[7]={'/0'};
printf("arrChar=%s/n",arrChar);
printf("arrChar[0]=%d/n",arrChar[0]);
printf("arrChar[1]=%d/n",arrChar[1]);
printf("arrChar[2]=%d/n",arrChar[2]);
printf("arrChar[3]=%d/n",arrChar[3]);
printf("arrChar[4]=%d/n",arrChar[4]);
printf("arrChar[5]=%d/n",arrChar[5]);
printf("arrChar[6]=%d/n",arrChar[6]);
return 0;
}
输出结果:
arrChar=
arrChar[0]=0
arrChar[1]=0
arrChar[2]=0
arrChar[3]=0
arrChar[4]=0
arrChar[5]=0
arrChar[6]=0
2.
#include <stdio.h>
int main(void)
{
char arrChar[7]={"/0"};
printf("arrChar=%s/n",arrChar);
printf("arrChar[0]=%d/n",arrChar[0]);
printf("arrChar[1]=%d/n",arrChar[1]);
printf("arrChar[2]=%d/n",arrChar[2]);
printf("arrChar[3]=%d/n",arrChar[3]);
printf("arrChar[4]=%d/n",arrChar[4]);
printf("arrChar[5]=%d/n",arrChar[5]);
printf("arrChar[6]=%d/n",arrChar[6]);
return 0;
}
输出结果:
arrChar=
arrChar[0]=0
arrChar[1]=0
arrChar[2]=0
arrChar[3]=0
arrChar[4]=0
arrChar[5]=0
arrChar[6]=0
3.
#include <stdio.h>
int main(void)
{
char arrChar[7]="/0";
printf("arrChar=%s/n",arrChar);
printf("arrChar[0]=%d/n",arrChar[0]);
printf("arrChar[1]=%d/n",arrChar[1]);
printf("arrChar[2]=%d/n",arrChar[2]);
printf("arrChar[3]=%d/n",arrChar[3]);
printf("arrChar[4]=%d/n",arrChar[4]);
printf("arrChar[5]=%d/n",arrChar[5]);
printf("arrChar[6]=%d/n",arrChar[6]);
return 0;
}
输出结果:
arrChar=
arrChar[0]=0
arrChar[1]=0
arrChar[2]=0
arrChar[3]=0
arrChar[4]=0
arrChar[5]=0
arrChar[6]=0
4.
#include <stdio.h>
int main(void)
{
char arrChar[7]='/0';
printf("arrChar=%s/n",arrChar);
printf("arrChar[0]=%d/n",arrChar[0]);
printf("arrChar[1]=%d/n",arrChar[1]);
printf("arrChar[2]=%d/n",arrChar[2]);
printf("arrChar[3]=%d/n",arrChar[3]);
printf("arrChar[4]=%d/n",arrChar[4]);
printf("arrChar[5]=%d/n",arrChar[5]);
printf("arrChar[6]=%d/n",arrChar[6]);
return 0;
}
输出结果:
编译错误。
5.
#include <stdio.h>
int main(void)
{
char arrChar[7];
printf("arrChar=%s/n",arrChar);
printf("arrChar[0]=%d/n",arrChar[0]);
printf("arrChar[1]=%d/n",arrChar[1]);
printf("arrChar[2]=%d/n",arrChar[2]);
printf("arrChar[3]=%d/n",arrChar[3]);
printf("arrChar[4]=%d/n",arrChar[4]);
printf("arrChar[5]=%d/n",arrChar[5]);
printf("arrChar[6]=%d/n",arrChar[6]);
return 0;
}
输出结果:
arrChar=
arrChar[0]=-12
arrChar[1]=111
arrChar[2]=96
arrChar[3]=0
arrChar[4]=-12
arrChar[5]=111
arrChar[6]=96
6.
#include <stdio.h>
int main(void)
{
char arrChar[7]={0};
printf("arrChar=%s/n",arrChar);
printf("arrChar[0]=%d/n",arrChar[0]);
printf("arrChar[1]=%d/n",arrChar[1]);
printf("arrChar[2]=%d/n",arrChar[2]);
printf("arrChar[3]=%d/n",arrChar[3]);
printf("arrChar[4]=%d/n",arrChar[4]);
printf("arrChar[5]=%d/n",arrChar[5]);
printf("arrChar[6]=%d/n",arrChar[6]);
return 0;
}
输出结果:
arrChar=
arrChar[0]=0
arrChar[1]=0
arrChar[2]=0
arrChar[3]=0
arrChar[4]=0
arrChar[5]=0
arrChar[6]=0
7.
#include <stdio.h>
int main(void)
{
char arrChar[7]={'0'};
printf("arrChar=%s/n",arrChar);
printf("arrChar[0]=%d/n",arrChar[0]);
printf("arrChar[1]=%d/n",arrChar[1]);
printf("arrChar[2]=%d/n",arrChar[2]);
printf("arrChar[3]=%d/n",arrChar[3]);
printf("arrChar[4]=%d/n",arrChar[4]);
printf("arrChar[5]=%d/n",arrChar[5]);
printf("arrChar[6]=%d/n",arrChar[6]);
return 0;
}
输出结果:
arrChar=0
arrChar[0]=48
arrChar[1]=0
arrChar[2]=0
arrChar[3]=0
arrChar[4]=0
arrChar[5]=0
arrChar[6]=0
虽然有好几种方法能够得到同样的结果,出于可移植性的考虑,我推荐第一种方法。