char * p = "12345";
char p[] = "12345";
sizeof(p) = 4 ; //指针长度为4
sizeof(p) = 6; //还加上了最后一个结束符'/0' , 可见sizeof 是用来求所占内存的字节数的!
sizeof在编译期间就确定了,所以求得是所占内存的字节数!
而strlen(p)都是5 , 不包含最后一个'/0'
strlen是运行期间确定的
例如: char p[20]="0123456789";
sizeof(p) = 20;
strlen(p) = 10;
另外:
fun(char [8])
fun(char [])
都等价于 fun(char *)
在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小