c++ 数组
来源:互联网 发布:黑暗之魂3低配优化补丁 编辑:程序博客网 时间:2024/05/17 08:47
数组的基础知识就不重复了,只挑了一些重点。
1、数组的声明及初始化
int array2[5] = ......{ 1, 2 , 3 , 4 , 5};//声明并初始化
int array3[5] = ......{ 1};//如果初始化的值少于元素数量,那么剩余的元素将被隐式的初始化为0
int array4[] = ......{ 1 , 2 , 3 , 4 , 5};//自动创建一个含有5个元素的数组,并且已经初始化为1,2 ,3,4,5
2、字符数组
声明一个字符数组时,我们可以直接的用一个字符串来初始化,例如
要注意的是,此时str的长度是7而不是6,str[6]存储的是一个表示字符串结束的字符,即NULL字符,用常量表示就是'/0',反斜杠后面加一个数字0,以上声明也等价于
特别的,当我们用数组来储存用户输入时,及其容易发生数组溢出情况,因为你不知道用户将要输入多少字符
cin >> str2;
cin >> setw(10) >> str3;
这样就指定了最多取用户的前9个字符,并且在末尾加上一个NULL字符。
类似的cout函数也有此情况,它将从初始地址一直打印内存中的字符,直到遇到一个NULL字符,我们可以采取类似cin的办法来处理问题。
3、static 数组
当我们需要在一个函数里保存局部数组的信息时,我们可以将其声明为static,这样当函数退出时,数组的信息将不会被删除
using std::cout;
using std::endl;
void staticArray(void);
void autoArray(void);
int main()
...{
cout << "First call to each function:"<< endl;
staticArray();
autoArray();
cout <<" Second call to each function:"<< endl;
staticArray();
autoArray();
cout<<endl;
return 1;
}
void staticArray()
...{
static int array1[3];
int i;
cout << " Values on entering staticArray: ";
for(i = 0; i < 3; i++)
cout << "array1[" << i << "] = " <<array1[i] << " ";
cout << " Values on exiting staticArray: ";
for(i = 0; i < 3; i++)
cout << "array1[" << i << "] = " <<(array1[i] += 5) << " ";
}
void autoArray()
...{
int array2[3] = ...{1, 2, 3};
int i;
cout << " Values on entering autoArray: ";
for(i = 0; i < 3; i++)
cout << "array2[" << i << "] = " <<array2[i] << " ";
cout << " Values on exiting autoArray: ";
for(i = 0; i < 3; i++)
cout << "array2[" << i << "] = " <<(array2[i] += 5) << " ";
}
/**//*输出结果
First call to each function
Values on entering staticArray
array1[0] = 0 array1[1] = 0 array1[2] = 0
Values on exiting staticArray
array1[0] = 5 array1[1] = 5 array1[2] = 5
Values on entering autoArray
array2[0] = 1 array2[1] = 2 array2[2] = 3
Values on exiting autoArray
array2[0] = 6 array2[1] = 7 array2[2] = 8
Second call to each function
Values on entering staticArray
array1[0] = 5 array1[1] = 5 array1[2] = 5
Values on exiting staticArray
array1[0] = 10 array1[1] = 10 array1[2] = 10
Values on entering autoArray
array2[0] = 1 array2[1] = 2 array2[2] = 3
Values on exiting autoArray
array2[0] = 6 array2[1] = 7 array2[2] = 8
*/
可见,声明为static的数组是在程序载入时初始化的,并且以后不再自动初始化。
4、传递数组给函数
c++通过模拟“按引用调用”将数组传递给函数。数组名的值就是数组第一个元素的地址。因为c++不像java那样可以知道数组的大小,所以传递数组时通常要顺带传递一个数组长度。
...{
int i;
for(i = 0;i < sz;i++)
a[i] *= 2;
}
void modifyElement(int i)
...{
i *= 2;
}
int main()
...{
const int size =3;
int array[size]= ...{1,2,3};
printArray(array);
modifyArray(array,size);
printArray(array);
modifyElement(array[1]);
printArray(array);
return 1;
}
/**//*输出结果
1 2 3
2 4 6
2 4 6
*/
如果不希望函数修改数组的内容,那么可以想我们在“函数”里面一样使用const限定符。
5、多维数组
多位数组跟一维数组有着类似的性质,重要的不同的地方是在析构函数时多维数组的删除问题,这再以后再讨论,下面仅仅讨论一下多维数组的初始化问题。
...{
int array1[2][3] = ...{ ...{1,2,3}, ...{4,5,6}},
array2[2][3] = ...{ 1,2,3,4},
array3[2][3] = ...{ ...{1,2},...{4}};
printArray(array1);
printArray(array2);
printArray(array3);
return 1;
}
/**//*输出结果
1 2 3
4 5 6
1 2 3
4 0 0
1 2 0
4 0 0
*/
相信例子中已经很明显了。
——总结自《c++编程金典》
- C 数组
- C 数组
- [C#]数组
- C 数组
- C-数组
- C-------数组
- c++-------------数组
- 【C#】数组
- C数组
- 【C++】 数组
- 【C++】数组
- C:数组
- C数组
- c数组
- C数组
- [C++]数组
- C数组
- 【C#】数组
- .net与java的战役,.net已经占了上风
- 一个ASPX的code behind的class,partial 部分在哪?
- 和Windows作斗争:机器为何变慢了(1)?
- Kb 和 KB 的区别
- 好男人好女人一定要知道的做饭技巧zz
- c++ 数组
- ASP小偷(远程数据获取)程序入门教程
- Vs2005中APP FOLDER的作用介紹
- 配置PHP服务器
- C#实现通过程序自动抓取远程Web网页信息
- 输入法自动切换
- 模仿CSDN的投票饼图
- 转SqlCopy
- 关于在FC6中安装m68k-elf-tools交叉编译碰到的问题及解决方法