字符串,结构体初始化的问题
读代码时碰到如下的对于字符串和结构体的初始化方式,
1.字符串savepath为什么用{0,}来初始化?把第一个元素值赋成0是什么意思?
char savepath[255] = {0,};
2.结构体这样赋值后是不是只有serverdone的值为0,其它值都为NULL?
struct context
{
int serverdone;
int clientdone;
char *get_name; /* Name of last get-request */
char *save_path;
};
struct context global_context = {0,};
[解决办法]
首个字符赋为null进行截断,这样代表savepath是个空串,否则printf显示的时候是个随机串
[解决办法]
struct context global_context = {0,};//后面的默认以0填充
结构体内所有元素都初始化为0
[解决办法]
NULL == 0
0在字符串中表示为结束符号 '\0 '.
strcpy(str1,str2);
把str2的内容(以指针指向的位置到结束符号的位置)复制到str1中
比如:
char strTmp[10] = {0}; or char strTmp[10] = {NULL};or char strTmp[10] = { '\0 '};
初始化strTmp的10个元素为0;
如果char strTmp[10] = { 'a '}; 就是把strTmp第一个元素初始化为 'a ',其余的为0