以下是数组的两种初始化方式, 区别如下:
字符串初始化:
char a[] = "hello";
采用这种方式,sizeof会计算字符串内容和结尾的’\0’字符,所以结果是6;
strlen函数则计算字符串长度,不包括’\0’。
列表初始化:
char b[] = {'h','o', 'l', 'l', 'o'};
采用这种方式,sizeof会计算列表中字符长度;
strlen函数则计算直到遇到’\0’字符的长度。
#include <bits/stdc++.h>
int main(){
char a[] = "hello";
char b[] = {'h','o', 'l', 'l', 'o'};
std::cout << "sizeof a : " <<sizeof (a) << " b : " << sizeof(b) << std::endl;
std::cout << "strlen a : " <<strlen (a) << " b : " << strlen(b) << std::endl;
std::cout << "a[0] : " << a[0] << " b[0] : " << b[0]<< std::endl;
}
输出:
sizeof a : 6 b : 5
strlen a : 5 b : 10
a[0] : h b[0] : h