最近被一个很基本的知识点给咬伤,虽然之前知道这个问题,但是写代码的时候不小心还是容易犯错。简单记录一下。
之前,代码里拥有如下数组:
const char *COLORS[3] = {"red", "black", "green" };
现在需要以追加的形式,添加一个yellow的颜色。粗心之下,我写成了:
const char *COLORS[4] = {"red", "black", "green" "yellow" };
在某处代码,我使用了COLORS[3],类似于
cout<<COLORS[3]<<endl;
程序执行后,就崩溃了。
问题出在,在追加的代码中的第4行,漏掉了一个逗号!!!正确的形式应该是:
const char *COLORS[4] = {"red", "black", "green", //这里应该有个逗号!!! "yellow" };
在没有逗号下,编译器将”green”和”yellow”当做一个字符串,也就是”greenyellow”,因此,COLORS[2]其实是”greenyellow”,而COLORS[3]是未显式初始化的,为NULL。因此使用COLORS[3]程序崩溃。
上面已经解决了问题。这里小小补充下:
在C++中,如下几种形式结果是一样的,表示的是同一个字符串”hello,world” :
"hello, world"
"hello, " "world"
"hello, / world"
"hello, " "w" "orld"