标签:line turn dimens array main namespace 数组名 内存 return
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
type arrayName [ arraySize ];
这叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C++ 数据类型。
例如:一个类型为 double 的包含 10 个元素的数组 xx
double xx[10];
xx 是一个可用的数组,可以容纳 10 个类型为 double 的数字
( 1) int xx[5] = {11,22,33,44,55}; 声明一个类型为 int 的包含 5 个元素的数组
(2) xx[4] = 55; ————> 把第 5 个元素的值 赋为 55
数组元素类型 名称 = 数组名[ 元素的索引 ];
int a[3] = {1,2,3}; int b = a[0]; int c = a[2]; //则,b = 1,c = 3;
#include <iostream> using namespace std; #include <iomanip> using std::setw; int main () { int n[ 10 ]; // n 是一个包含 10 个整数的数组 // 初始化数组元素 for ( int i = 0; i < 10; i++ ) { n[ i ] = i + 100; // 设置元素 i 为 i + 100 } cout << "Element" << setw( 13 ) << "Value" << endl; // 输出数组中每个元素的值 for ( int j = 0; j < 10; j++ ) { cout << setw( 7 )<< j << setw( 13 ) << n[ j ] << endl; } return 0; }
使用了 setw() 函数来格式化输出
结果:
多维数组 | C++ 支持多维数组。多维数组最简单的形式是二维数组。 |
指向数组的指针 | 您可以通过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针。 |
传递数组给函数 | 您可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。 |
从函数返回数组 | C++ 允许从函数返回数组。 |
(1)多维数组
type name[size1][size2]...[sizeN];
例如,创建一个二维 3行 4列 整型数组:
int threedim[3][4];
初始化:
int a[3][4] = { {0, 1, 2, 3} , /* 初始化索引号为 0 的行 */ {4, 5, 6, 7} , /* 初始化索引号为 1 的行 */ {8, 9, 10, 11} /* 初始化索引号为 2 的行 */ }; or int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11}; //两个是等同的
访问:
a[x][y];
(2)指向数组的指针
数组名是一个指向数组中第一个元素的常量指针
例如:double balance[50];
balance 是一个指向 &balance[0] 的指针,即数组 balance 的第一个元素的地址。
因此,下面的程序片段把 p 赋值为 balance 的第一个元素的地址:
double *p; double balance[10]; p = balance;
访问数组元素:
#include <iostream> using namespace std; int main () { // 带有 5 个元素的双精度浮点型数组 double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; p = balance; // 输出数组中每个元素的值 cout << "使用指针的数组值 " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(p + " << i << ") : "; cout << *(p + i) << endl; } cout << "使用 balance 作为地址的数组值 " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(balance + " << i << ") : "; cout << *(balance + i) << endl; } return 0; }
结果:
在上面的实例中,p 是一个指向 double 型的指针,这意味着它可以存储一个 double 类型的变量。一旦我们有了 p 中的地址,*p 将给出存储在 p 中相应地址的值
1. Array 直接初始化 char 数组是特殊的,这种初始化要记得 字符是以一个 null 结尾的。 ————> 要给null 留位置
char a1[] = {‘C‘, ‘+‘, ‘+‘}; // 初始化,没有 null char a2[] = {‘C‘, ‘+‘, ‘+‘, ‘\0‘}; // 初始化,明确有 null char a3[] = "C++"; // null 终止符自动添加 const char a4[6] = "runoob"; // 报错,没有 null 的位置
a4 是错误的,虽然 a4 包括 6 个直接字符,但是 array 大小是 7:6个字符 + 一个null。正确的是:
const char a4[7] = "runoob";
2. Array 是固定大小的,不能额外增加元素.当我们想定义不固定大小的字符时,可以使用 vector(向量) 标准库。
#include <iostream> #include <vector> using namespace std; int main() { // 创建向量用于存储整型数据 vector<int> vec; int i; // 显示 vec 初始大小 cout << "vector size = " << vec.size() << endl; // 向向量 vec 追加 5 个整数值 for(i = 0; i < 5; i++){ vec.push_back(i); } // 显示追加后 vec 的大小 cout << "extended vector size = " << vec.size() << endl; return 0; }
vec 的大小随着 for 循环的输入而增大。
执行以上代码,输出结果:
vector size = 0 extended vector size = 5
3. setw(int n)控制输出间隔(n -1 个空格)
4. 数组初始化时可以用聚合方法,但是赋值时候不可以用聚合方法
合法: int array[] = {5,10,20,40}; 不合法: int array[]; int main() { array[] = {5,10,20,40}; return 0; }
5.
#include<iostream> using namespace std; template<class T> int length(T& arr) { //cout << sizeof(arr[0]) << endl; //cout << sizeof(arr) << endl; return sizeof(arr) / sizeof(arr[0]); } int main() { int arr[] = { 1,5,9,10,9,2 }; // 方法一 cout << "数组的长度为:" << length(arr) << endl; // 方法二 //cout << end(arr) << endl; //cout << begin(arr) << endl; cout << "数组的长度为:" << end(arr)-begin(arr) << endl; system("pause"); return 0; }
结果: 6 6
对于字符串数组,可以用 strlen() 函数来获取字符串数组的长度。
标签:line turn dimens array main namespace 数组名 内存 return
原文地址:https://www.cnblogs.com/expedition/p/11320164.html