sizeof(arr), 是看arr开辟了多少个合法空间,这里你定义是是 char arr[10], 所以是10个char 空间,至于这十个空间用没用,sizeof(arr) 都会返回10字节
strlen(arr), 这是用来计算字符串,有效位字符的个数的,如果你定义这个空间,但没有初始化,那么,这个函数可能会出错,字符串是以' \0' 结尾,定义时
char arr[10] = "What?"; 所以你初始化了,但这里给你自动在 ?后面加了一个'\0', 这个不算有效字符,所以回返
数组空间大小不是由里边的元素决定的吗
如果你是这么定义的 char arr[] = "What?" ; //那么个字符串的空间,就是由里面的元素决定的,不过这里是 6个char 空间 sizeof(arr) 返回 6
但如果是这样 char arr[] = {'W', 'h', 'a', 't', '?'}; //那么sizeof(arr) 返回是5,且用strlen(arr);这个函数会出现未知的结果。
不知道你清楚了没
|