1、数组名可以看做指向数组首元素的指针。
#define debug qDebug()<<
int main(int argc, char *argv[])
{
char v[] = "this is a string";
char * p2 = v;
debug strlen(p2);
debug strlen(v);
}
这里做了隐式转换:
char * p2 = "this is a string";
这是c语言风格的字符串。
2、不存在从指针转到数组的转换。
3、数组可以使用范围for循环:
char v[] = "this is a string";
for(auto & c:v)
{
debug c;
}
4、不能以值传递的方式将数组传给函数,通常传递的指向数组首元素的指针(数组名),但是这样就不知道数组中元素的个数可能会造成数组越界,所以通常的方式是将数组中的内存放到容器里,传递容器给函数。