1、初始化
在C/C++中,可以在数组定义的时候对其进行初始化:
int a1[3] = {1, 2, 3};
int a2[3] = {0}; //将数组a2各个元素赋值为0。
int a3[] = {1, 2, 3};
char s1[3] = {'a', 'b', 'c'};
char s2[] = "abc";
2、数组赋值
错误情况1:
int arr[3];
arr = {10,16,8};
编译时报错:assigning to an array from aninitializer list/
// 不能对数组赋值,只能对数组元素初始化或赋值
错误情况2:
int a4[3] = {}; //无法通过编译;
char s3[3] = "abc"; //编译错误,数组越界
“abc”是4个字符,除了a/b/c三个字符之外,还有一个结束字符 ‘\0’ 。
错误情况3:
char a5[3] = {1}; //这行代码之后,数组a5各项值分别为1, 0, 0。
在C/C++中,如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为0。可以通过int a2[3] = {0};来将数组a2全赋值为0。
正确做法为:
memset(a5, 1, 3);
3、特殊情况
在C++中,如果一个数组被定义在类中,那么它的赋值方法和通常的面向过程中的赋值方法是不一样的。不能再定义数组的时候同时给数组赋值,也不能再构造函数中直接利用等式对数组进行赋值。
class A{
private :
int m_arr[10];
public:
A()
{
temp_arr[10] = {1,2,3,4,5,6,7,8,9,10};
memcpy(m_arr,temp_arr,sizeof(temp_arr));
}
....................
}
注意,这里memcpy属于string.h